【问题标题】:Disable mousewheel on combo box and bubble to parent禁用组合框上的鼠标滚轮并冒泡到父级
【发布时间】:2013-01-10 06:53:22
【问题描述】:

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

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

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

我试过了

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

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

【问题讨论】:

    标签: c# winforms


    【解决方案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 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多