表单忽略了一些鼠标点击

时间:2014-10-16 16:42:20

标签: c# .net winforms

我正在开展一个winforms项目,我需要在检测到鼠标时显示文本和图像,但我遇到了一些问题。我不能始终如一地检测鼠标点击。这是程序的基本概述,首先是主要表单加载。然后用户加载另一个表单来设置选项。完成后,另一个表单将关闭,主表单将获得焦点。主要形式是应该接收鼠标输入。检测到鼠标单击后,将调用一个函数,该函数使用ThreadPool.QueueUserWorkItem播放声音并显示图像。

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

1 个答案:

答案 0 :(得分:1)

很多东西都会影响鼠标点击,即其他UI元素。

如果您的事件处理程序位于基本容器控件上,并且他们单击一个文本框;然后文本框接收点击事件,容器没有。

如果你的"在顶部"控件不需要用户输入,您只需将IsHitTestVisible(或等效的WinForms)设置为false即可。如果你需要用户输入,你需要以不同的方式捕获点击,或者添加一个" MouseUp"每个控件的事件。

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