【发布时间】:2016-01-28 09:06:01
【问题描述】:
在带有 .Net 4.5 的 C# 中,禁用的 NumericUpDown 和 ComboBox 控件仍然响应鼠标滚轮事件。这似乎是一个错误。
这是 WinForms 中的错误吗? 没有子类化控件,我该如何防止这种情况发生?
[编辑:复制步骤] 在 Windows 10 上使用 Visual Studio Professional 2012 Update 4,我执行以下操作:
- 创建一个新的 WinForms 应用程序。
- 在设计器中打开 Form1。从工具箱中拖入一个面板。
- 将一个 ComboBox 和一个 NumericUpDown 拖到面板中。
- 使用属性面板 -> 数据 -> 项目在 ComboBox 上设置 3 个字符串“A”、“B”、“C”
- 拖入一个复选框并将其放在面板下方。将其命名为“已禁用”。
-
双击复选框以创建事件处理程序:
private void checkBox1_CheckedChanged(object sender, EventArgs e) { panel1.Enabled = !checkBox1.Checked; } 编译并运行。点击复选框,使 panel1.Enabled 为 false,然后将鼠标悬停在 NumericUpDown 上并移动鼠标滚轮。即使 NumericUpDown 被禁用,数字也会发生变化。
【问题讨论】:
-
我无法复制这个。如果控件被禁用,它们将无法获得焦点,因此我无法让它们响应鼠标事件。你有一些步骤来复制这个或要显示的代码吗?
-
在我的例子中,控件是被禁用的容器控件的子控件。
-
还是做不到。我已将它们放在面板中并仅禁用面板,它们仍然不响应鼠标事件。你能提供具体的细节和步骤吗?
-
我可以在这里重现。这只是滚轮事件,而不是所有鼠标事件。
-
你能够复制它很棒,但如果没有其他人可以,那么没有人可以提供帮助。我知道这是滚动事件。除非你能提供更多信息,否则我不得不听从别人的意见,也许他们知道我不知道的事情。
标签: c# winforms combobox mousewheel numericupdown