1
16
好吧,我最终找到了我自己的解决方案,它非常简单。我派生了自己的ToolStrip类(和MenuStrip类),如下所示:
看起来,就像macosx一样,Windows做出了一个GUI风格的决定,要求用户首先激活一个窗口,然后才允许选择任何控件。但是,Windows仅对特定控件(如ToolStrip和MenuStrip)执行此操作。当窗口处于非活动状态时,这些控件不会被发送鼠标按下事件。我不确定WinForms是如何执行这个GUI准则的,但也许它使用了一个消息过滤器Application.AddMessageFilter(). 不管怎样,MenuStrip控件仍然获取mouse UP事件。这启发了我的解决方案。我只需查找任何鼠标向上的事件,但它缺少相应的向下事件。当我看到这种特殊情况时,我生成了自己的鼠标按下事件,对于ToolStrip控件,世界都很高兴。:-) |
2
2
简单清洁的解决方案
|
3
0
这似乎是一个更简单的解决方案:
|
4
-1
如果您订阅了表单,即使应用程序没有焦点,您也可以检测到表单上的单击
然后,当您单击窗体时,无论窗体以前是否有焦点,都会得到回调。 然后可以模拟单击所需的控件。 这不是一个非常优雅的解决方案,但它应该可以工作。你必须确保点击不会被发送到你的工具栏按钮两次。 |
JOO · 使用udpClient从多个IP地址连续接收数据 2 年前 |
Futterkiste · 函数比例图 2 年前 |
user18789895 · 我应该如何验证WinForms应用程序? 2 年前 |
beriscen · 如何使整个链接标签区域可点击? 2 年前 |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 2 年前 |