阻止鼠标滚轮位于控件上,启用 = 假

本文关键字:控件 启用 鼠标 于控件 | 更新日期: 2023-09-27 18:32:11

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

这是WinForms中的错误吗?如果不对控件进行子类化,如何防止这种情况发生?

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

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

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

阻止鼠标滚轮位于控件上,启用 = 假

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