在组合框和气泡上禁用鼠标滚轮

本文关键字:鼠标 组合 气泡 | 更新日期: 2023-09-27 17:51:14

我有一个嵌套的控件布局:

表单(用户表单)> TabControl> UserControl (autoscroll, docked-fill)> GroupBox (docked-top)> ComboBox

一个用户体验问题是,焦点大部分时间都在一个输入框上。当输入框是一个组合框时,组合框会改变选择,这是不希望的。我想滚动到保持组合框的焦点,而滚动UserControl.

我试着

combobox.MouseWheel += (s, e) => combobox.Parent.Focus();

,但这似乎发生在选择被改变之后。另一方面,文本框工作得很好。是否有一种方法使组合框的行为像鼠标滚轮上的文本框?

在组合框和气泡上禁用鼠标滚轮

几个月前我有一个这样的场景:我在每个选项卡中都有ribbon选项卡、按钮、文本框和组合框。我想用鼠标滚轮(对于组合框)向下和向上滚动,但是,我的鼠标滚轮改变了选项卡。它没有影响组合框。

然后我创建了自己的类,它继承了那个Ribbon控件。

public class MyRibbon : Ribbon {
  public bool DisableMouseWheel { get; set; }
  protected override void OnMouseWheel(MouseEventArgs e) {
    if (!this.DisableMouseWheel) {
      base.OnMouseWheel(e);
    }
  }
}

我然后重建我的解决方案。从解决方案资源管理器中单击"显示所有文件"按钮,并打开窗体的设计器文件。文件中有两行引用了Ribbon类型,我用新的MyRibbon类替换了该类型。

然后我订阅了ComboBox的Enter和Left事件,在那里我改变了DisableMouseWheel属性。