【发布时间】:2012-10-08 15:57:15
【问题描述】:
我正在尝试创建一个包含自定义控件的“工具提示”。我使用ToolStripDropDown 实现了它,它可以满足我的需要 - 当用户单击其他地方或激活另一个窗口等时关闭。
但是,即使显示 ToolStripDropDown,我也希望能够在父控件中获取 MouseMove 事件。我尝试在各个阶段设置父控件的Capture 属性(在显示下拉列表之前,在其Opened 事件处理程序等中),但它总是立即设置回false。有没有办法(不一定使用Capture 属性)在父控件中获取MouseMove 事件?不,我不想考虑像使用计时器和定期检查鼠标位置这样的丑陋技巧。
【问题讨论】:
-
对,在下拉菜单之外单击时它会关闭。在窗口外单击时获取事件需要一些技巧。它需要捕获鼠标。你不能同时拥有它。
-
我不需要获取
MouseDown事件,只需要获取MouseMove事件。当显示ToolStripDropDown但鼠标在它之外时,哪个窗口会收到这些事件? -
下拉窗口获取它们。因为它捕获了鼠标。
-
我的意思是如果我不手动设置
Capture属性,哪个窗口会获取它们,即。我只是显示下拉菜单(例如上下文菜单)。 -
您在这件事上别无选择,下拉列表必须捕获鼠标,因此会总是得到鼠标消息。它必须或无法正常工作。不知道为什么这会让您感到困惑,除了它发生在您看不到的代码中。
标签: c# winforms toolstripdropdown mousecapture