我有一个本质上是绘图 Canvas 的自定义控件,以及一个使用它来编辑文件的程序。但是,当打开一个新文件时,可能会发生一些非常奇怪的事情。
如果用户在“打开文件”对话框(标准 TOpenDialog
控件)中双击文件,而不是选择一个项目并按下 ENTER
,下面的 Canvas 会注册一个单击事件并结束在加载完成后立即在光标位置执行绘图操作。
显然这不是预期的行为。我之前注意到,当您双击鼠标时,双击消息在第二次单击消息之前到达。我认为对话框可能会因双击而关闭,然后第二次单击消息到达并发送到适当坐标处的任何位置,现在它已经消失了。
有什么办法可以阻止这种情况发生?我不能告诉我的代码“加载后,只需点击下一次”,因为它可能已经用“ENTER”键打开,然后它会错过第一次合法点击。谁能想出更好的方法来处理这个问题? (使用 Windows 7,以防有所不同。)
最佳答案
如果出现“第二次点击消息”,则说明有问题。 (一方面,Windows 没有“单击”消息,只有鼠标弹起和鼠标按下消息。) A double click goes like this:鼠标按下、鼠标弹起、双击、鼠标弹起。对话框在双击消息和第二个鼠标松开消息之间消失。如果您的控件接收到鼠标弹起消息并将其视为完全单击,那么这就解释了问题,您需要停止;单击始终是一对 鼠标按下和鼠标弹起消息。如果两者都没有,则不是点击。
关于windows - 如何防止双击“打开文件”对话框注册对其下方表单的单击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679207/