【问题标题】:How does Windows decide whether to trigger MouseUp or Click?Windows 如何决定是触发 MouseUp 还是 Click?
【发布时间】:2013-06-18 17:06:00
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 是的,它取决于时间。如果您点击得足够快,那么您将获得一个 DoubleClick 事件。您可能已经知道 :) 您可以将其关闭,重置 ControlStyles.StandardDoubleClick 样式。
  • 双击?是双手点击的时候吗?说真的,它没有看到双击,我只是单击一下然后查看命中了哪个断点。

标签: .net windows winforms


【解决方案1】:

鼠标点击应该触发这两个事件。有关详细信息,请参阅Mouse Events in Windows Forms,但是(来自文档):

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

MouseDown 事件。

点击事件。

鼠标点击事件。

MouseUp 事件。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多