我有一个具有一些复杂拖动功能的控件。它也是可点击的。
我发现有时单击(快速鼠标向下,没有移动)会导致OnMouseUp
事件,有时会导致Click
事件。这似乎与时间相关......如果我在MouseDown
事件上设置断点,我得到Click
,否则我得到(主要)OnMouseUp
。
那么 Windows 是如何决定触发哪个事件的呢?
谢谢
鼠标点击应该触发这两个事件。有关详细信息,请参阅Windows 窗体中的鼠标事件,但是(来自文档):
当按下和释放鼠标按钮(无论是哪个鼠标按钮)时,所有 Windows 窗体控件都以相同的顺序引发单击事件,除非在以下列表中针对各个控件进行了说明。以下列表显示了单击鼠标按钮引发的事件顺序:
鼠标按下事件。
点击事件。
鼠标点击事件。
MouseUp 事件。
请注意,某些控件具有不同的行为(记录在各个控件中),双击行为也有些不同(也记录在 MSDN 上)。
此外 - 在调试器中放置断点可能会导致消息处理行为偶尔变得有点奇怪。Debug.WriteLine
如果您想查看按顺序处理的所有消息,我建议使用或类似的方法通过单个消息而不是使用断点来跟踪所有输出。