【问题标题】:Form ignores some mouse clicks表单忽略一些鼠标点击
【发布时间】:2014-12-12 03:06:02
【问题描述】:

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

发生的情况是鼠标点击有时会在主窗体中被忽略。通常第一次点击会被忽略,那么我会说未来有一半以上的鼠标点击会被忽略。我添加了代码以在事件处理程序中触发 MouseUp 时通知我,因此我确定事件处理程序没有被调用。我还在主表单中设置了this.Capture = true;,所以我不太清楚为什么会忽略一些鼠标点击。有什么东西会干扰鼠标点击吗?

【问题讨论】:

  • 我发现有时 Mousedown 会触发而 Click 或 MouseClick 不会..

标签: c# .net winforms


【解决方案1】:

是的

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多