如何在.NET中实时捕获numericUpDown ctrl的值变化?

时间:2010-02-22 07:20:38

标签: .net

我已经实现了 ValueChanged 事件,但我发现只有在将焦点从numericUpDown更改为其他控件或单击向上/向下箭头后才会触发它。

在控件中输入值不会触发 ValueChanged 事件。

我现在做的是添加 KeyDown 事件并判断输入值是否为数字(不能包含SHIFT / CTRL / ALT键);但是还需要涉及另一种情况:用户可以将值粘贴到numericUpDown ctrl

我需要的是:

  1. 当我在numericUpDown ctrl中输入数值(仅数字)时,会知道内容已被更改;
  2. 将数值粘贴到ctrl中时,它还会更改内容已更改

3 个答案:

答案 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();
    }
}