WinForms

时间:2017-10-26 22:37:17

标签: winforms events

当我试图制作自己的自定义" WinForms"时,我对每个鼠标事件发生的时间感到困惑。我已经制作了自己的自定义课程,但现在这些事情是我必须重做的,因为他们不能正常工作。

我有一个自定义控件类。该类中的对象可以包含其他控件,可以包含其他控件等。有一个主控制,从图片框输入。该输入是鼠标的位置,甚至在图片框中激活了什么。

到目前为止,我已经想过,MouseMoveMouseHoverMouseDown事件最简单,因为它们发生在简单的条件下。但其余部分需要有关鼠标位置,状态和过去的其他数据。 MouseDoubleClick似乎在特定事件序列后严格激活(严格down-up-down-updown-up-down-move-updown-up-down-move-leave-enter-move-up,且移动事件未激活)。考虑到这一点,我更加困惑。

每种鼠标事件发生在什么条件和顺序中?

修改

进一步的测试使事情变得更加混乱。首先,现在我想知道注册MouseMove的速率是多少,并且测试它表明每个事件之间有不同的时间(或者我使用StopWatch说的话)。这很重要,因为这会引发Hover被触发的问题。 Clickdown-up,允许在两者之间移动。 事实证明DoubleClick足够简单 - down-up-down-up,只允许在第二次下降之间进行移动。 Hover只在每次Enter之后激活一次,此时鼠标保持静止;如果你想再次触发Hover,鼠标必须离开然后重新进入。

现在的问题是系统如何跟踪鼠标的活动 - 它如何检测鼠标的移动,按住和释放。希望这能帮助我得到完整的答案。

0 个答案:

没有答案