【问题标题】:Prevent mousewheel on controls with Enabled = false使用 Enabled = false 防止控件上的鼠标滚轮
【发布时间】:2016-01-28 09:06:01
【问题描述】:

在带有 .Net 4.5 的 C# 中,禁用的 NumericUpDownComboBox 控件仍然响应鼠标滚轮事件。这似乎是一个错误。

这是 WinForms 中的错误吗? 没有子类化控件,我该如何防止这种情况发生?

[编辑:复制步骤] 在 Windows 10 上使用 Visual Studio Professional 2012 Update 4,我执行以下操作:

  1. 创建一个新的 WinForms 应用程序。
  2. 在设计器中打开 Form1。从工具箱中拖入一个面板。
  3. 将一个 ComboBox 和一个 NumericUpDown 拖到面板中。
  4. 使用属性面板 -> 数据 -> 项目在 ComboBox 上设置 3 个字符串“A”、“B”、“C”
  5. 拖入一个复选框并将其放在面板下方。将其命名为“已禁用”。
  6. 双击复选框以创建事件处理程序:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        panel1.Enabled = !checkBox1.Checked;
    }
    
  7. 编译并运行。点击复选框,使 panel1.Enabled 为 false,然后将鼠标悬停在 NumericUpDown 上并移动鼠标滚轮。即使 NumericUpDown 被禁用,数字也会发生变化。

【问题讨论】:

  • 我无法复制这个。如果控件被禁用,它们将无法获得焦点,因此我无法让它们响应鼠标事件。你有一些步骤来复制这个或要显示的代码吗?
  • 在我的例子中,控件是被禁用的容器控件的子控件。
  • 还是做不到。我已将它们放在面板中并仅禁用面板,它们仍然不响应鼠标事件。你能提供具体的细节和步骤吗?
  • 我可以在这里重现。这只是滚轮事件,而不是所有鼠标事件。
  • 你能够复制它很棒,但如果没有其他人可以,那么没有人可以提供帮助。我知道这是滚动事件。除非你能提供更多信息,否则我不得不听从别人的意见,也许他们知道我不知道的事情。

标签: c# winforms combobox mousewheel numericupdown


【解决方案1】:

在尝试在同事的系统上重现此问题后,我们确定问题是由我安装的第三方工具引起的,该工具可以在鼠标指针下滚动窗口而无需关注该窗口(a la OSX)。

【讨论】:

  • 嗯,我现在感觉好多了。允许跳“我告诉过你”的舞蹈吗? ;-) 很高兴你把事情解决了。 (仅供参考,我没有投反对票,不确定忍者是谁)
  • 去吧 :D 谢谢,我也是(很高兴我的意思是我把它整理好了)——很高兴点击我们 JIRA 上的“不会修复”按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 2014-02-11
  • 2013-11-30
  • 1970-01-01
相关资源
最近更新 更多