0

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

表单(用户表单)> TabControl > UserControl(自动滚动,停靠填充)> GroupBox(停靠顶部)> ComboBox

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

我试过了

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

但这似乎发生在选择更改后。另一方面,TextBox 工作得很好。有没有办法让组合框表现得像鼠标滚轮上的文本框?

4

1 回答 1

1

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

然后,我创建了自己的类,该类继承自该 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 属性。

于 2013-01-10T07:14:07.393 回答