我已经实现了 ValueChanged 事件,但我发现只有在将焦点从numericUpDown更改为其他控件或单击向上/向下箭头后才会触发它。
在控件中输入值不会触发 ValueChanged 事件。
我现在做的是添加 KeyDown 事件并判断输入值是否为数字(不能包含SHIFT / CTRL / ALT键);但是还需要涉及另一种情况:用户可以将值粘贴到numericUpDown ctrl
中我需要的是:
答案 0 :(得分:1)
我回答了您关于数字更新控制的相关其他问题:
how to hold the invalid value for NumericUpDown after it loses focus?
您可以使用我在那里描述的相同技术来处理嵌入文本框的TextChanged事件。
最好的问候......
答案 1 :(得分:0)
我建议继承NumericUpDown并重写OnTextBoxTextChanged方法以引发ValueChanged事件。
您还需要考虑代表更改的内容,如果您在用户键入单个数字然后输入第二个数字时提高Valuechanged,则可能会出现意外结果。或者是非数字字符。
答案 2 :(得分:0)
CodeProject救援:
A Derived NumericUpDown that Provides Handlers for NumericUpDown's Up and Down Button
Extended NumericUpDown control
作为奖励,这里是一个包装NumericUpDown:
class WrappingNumericUpDown : NumericUpDown
{
public override void DownButton()
{
if (this.Value == this.Minimum)
this.Value = this.Maximum;
else
base.DownButton();
}
public override void UpButton()
{
if (this.Value == this.Maximum)
this.Value = this.Minimum;
else
base.UpButton();
}
}