【问题标题】:Cannot deselect NumericUpDown?无法取消选择 NumericUpDown?
【发布时间】:2011-08-24 04:44:35
【问题描述】:

如果您创建一个新的 C# 项目并将 NumericUpDown 放在表单上(甚至是文本框),是否无法取消选择?

目前我的应用程序有一个可滚动的容器,当用户选择 NumericUpDown 时,他或她无法取消选择它。然后,当尝试使用鼠标上的滚轮进行任何操作时,它会滚动 NumericUpDown 的值。

理想情况下,当用户单击表单上的空白点时,它会选择表单并取消选择 NumericUpDown。通常,要么禁用 NumericUpDown 上的鼠标滚轮滚动(也不知道如何执行此操作)。 NumericUpDown 包含不会经常更改的数据,因此它根本不会真正影响用户。

【问题讨论】:

    标签: c# winforms focus


    【解决方案1】:

    要在 NumericUpDown 上禁用鼠标滚轮滚动,您需要创建自己的后代控件来覆盖 OnMouseWheel 事件,并在表单上使用自定义控件。

    public class NonScrollingNumericUpDown : NumericUpDown
    {
        protected override void OnMouseWheel(MouseEventArgs e)
        {
               //Don't call base.OnMouseWheel(e)
        }
    }
    

    要回答您关于控制焦点的问题,我相信您还需要在表单上至少拥有一个其他控件才能传递焦点。

    【讨论】:

      【解决方案2】:

      在表单中添加标签并清除其Text 属性。这会给您留下一个看不到但仍能获得焦点的标签。

      在表单的Click 事件中,调用此代码将焦点设置到标签:

      label1.Focus();
      

      【讨论】:

      • 我喜欢这种方式。我有一个带有数据网格视图的表单,我可以上下滚动。它会导致数字向上/向下改变。我只是在数字上使用 mouseup 事件并将焦点设置回 DGV。
      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多