如何使 NumericUpDown 只读

How to make NumericUpDown ReadOnly

我想让 WinForms NumericUpDown 控件不可编辑,或者至少应该禁用自旋控件。我尝试将控件设置为只读,但使用鼠标滚动值正在改变。请帮我实现这个目标。

尝试以下操作以将数字 up/down 设置为只读:

numericUpDown1.ReadOnly = true;    
numericUpDown1.Increment = 0;

希望对您有所帮助。

另一种方法是子类化 NumericUpDown 并覆盖 DownButtonUpButton 方法,以便在设置 ReadOnly 时它们 return 提早:

public override void DownButton()
{
   if(this.ReadOnly)
      return;

   base.DownButton();
}

public override void UpButton()
{
   if(this.ReadOnly)
      return;

   base.UpButton();
}

这似乎也可以防止 up/down 箭头按下和鼠标滚动更改值。

这种方法的好处是您现在可以在控件上对 ReadOnly 属性 进行数据绑定,并期望它将值设为只读,而不仅仅是文本区域。

还有另一种选择:NumericUpDown 控件有两个 sub-controls、“UpDownButtons”和“UpDownEdit”。我们要禁用第一个:

numericUpDown1.ReadOnly = true;
numericUpDown1.Controls[0].Enabled = false; // Controls[0] is the spinner

或设置Controls[0].Visible = false 完全隐藏它。