我有一个复杂的拖动function控制。 它也是可点击的。
我发现有时点击(快速鼠标下移,没有移动)会导致OnMouseUp
事件,有时是Click
事件。 这似乎是时间依赖的…如果我把断点的MouseDown
事件,我得到Click
,否则我(主要) OnMouseUp
。
那么Windows如何决定触发哪个事件呢?
谢谢
鼠标点击应该触发这两个事件。 有关详细信息,请参阅Windows窗体中的鼠标事件 ,但是(从文档):
所有Windows窗体控件按下并释放鼠标按钮时(不管鼠标按下哪个按钮),按相同的顺序提高点击事件,除了以下列出的各个控件的注释。 以下列表显示了单个鼠标按钮单击事件的顺序:
MouseDown事件。
点击事件。
MouseClick事件。
MouseUp事件。
请注意,某些控件具有不同的行为(记录在单独的控件中),并且双击行为也有点不同(也记录在MSDN上 )。
另外 – 在调试器中添加断点可能会导致消息处理行为偶尔会变得有点奇怪。 我建议使用Debug.WriteLine
或类似的方法来跟踪所有的输出通过单个消息,而不是使用断点,如果你想看到所有的消息按顺序处理。