窗体忽略一些鼠标点击

问题描述:

我正在开发一个winforms项目,在检测到鼠标单击时需要显示文本和图像,但我遇到了一些问题,我无法始终检测到鼠标点击。程序基本概述,首先是主窗体加载,然后用户加载另一个窗体来设置选项,一旦完成,另一个窗体关闭,主窗体获得焦点,主窗体应该是接收鼠标输入一旦检测到鼠标点击,就会调用一个函数,它使用ThreadPool.QueueUserWorkItem来播放声音和显示图像窗体忽略一些鼠标点击

发生什么事情是鼠标点击有时在主窗体中被忽略通常第一次点击被忽略, d说未来鼠标点击的一半以上将被忽略,我已经添加了代码来通知我当MouseUp在事件处理程序中触发时,所以我确定事件处理程序没有被调用。我还在主窗体中设置了this.Capture = true;,所以我不太确定为什么一些鼠标点击被忽略。有什么可能干扰鼠标点击?

+1

我发现有时Mousedown火灾和Click或MouseClick不会.. – TaW 2014-10-16 18:17:58

的大量东西可以用鼠标点击,即,其他UI元素干扰。

如果您的事件处理程序位于基本容器控件上,并且它们单击,例如文本框;那么文本框会收到点击事件,而容器不会。

如果您的“顶部”控件不需要用户输入,您可以简单地将IsHitTestVisible(或与WinForms等效)设置为false。如果您需要需要用户输入,则需要以不同的方式捕获点击,或向每个控件添加“MouseUp”事件。

请参阅Hittest transparency for an entire formWinForms equivalent of WPF's IsHitTestVisible 要在Winforms中执行的方法IsHitTestVisible。另外,只需使用WPF。