Windows如何决定是否触发MouseUp或Click?

时间:2013-06-18 17:06:01

标签: .net windows winforms

我有一个带有一些复杂拖动功能的控件。它也是可点击的。

我发现有时点击(快速鼠标下移,无移动)会导致OnMouseUp事件,有时会发生Click事件。这似乎取决于时间...如果我在MouseDown事件上设置断点,我会得到Click,否则我得到(主要)OnMouseUp

那么Windows如何决定触发哪个事件?

由于

1 个答案:

答案 0 :(得分:2)

鼠标单击应触发两个事件。有关详细信息,请参阅Mouse Events in Windows Forms,但(从文档中):

  

当按下并释放鼠标按钮时(无论使用哪个鼠标按钮),所有Windows窗体控件都以相同的顺序引发单击事件,除非在以下列表中针对各个控件进行了说明。以下列表显示了单个鼠标按钮单击引发的事件顺序:

     

MouseDown事件。

     

点击活动。

     

MouseClick事件。

     

MouseUp事件。

请注意,某些控件具有不同的行为(在各个控件中记录),双击行为也有所不同(也记录为on MSDN)。

另外 - 在调试器中放置断点可能会导致消息处理行为偶尔变得有点奇怪。如果您希望按顺序查看所有消息,我建议使用Debug.WriteLine或类似的方法来跟踪单个消息的所有输出,而不是使用断点。