2010-02-22 25 views
0

我已经实现了ValueChanged事件,但我发现只有在将焦点从numericUpDown更改为其他控件或单击向上/向下箭头后才会触发它。如何在.NET中实时捕获numericUpDown ctrl的值更改?

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

我现在所做的是添加一个KeyDown事件并判断输入值是否为数值(不能包含SHIFT/CTRL/ALT键);但还有另一种情况下,需要参与:用户可以值粘贴到的NumericUpDown CTRL

我需要的是:

  1. 当我在输入的数值(只有数字) numericUpDown ctrl,它会知道内容已被更改;
  2. 粘贴时的数值为CTRL,也kowns内容改变

回答

0

我会建议子类的NumericUpDown并重写OnTextBoxTextChanged方法,以提高ValueChanged事件。

您还需要考虑代表更改的内容,如果在用户键入单个数字和第二个数字时提高了Valuechanged,则可能会得到意想不到的结果。或者是一个非数字字符。

+0

似乎NumericUpDown ctrl不接受非nu meric character – 2010-02-22 07:29:31

+0

好吧,那就是解决了那个问题! – benPearce 2010-02-22 07:36:59

+0

其实我需要的是一个事件作为文本框的TextChanged,但似乎NumericUpDown没有这个事件。我认为增加一个新班级并不适合我的工作 – 2010-02-22 07:53:03

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(); 
    } 
} 
相关问题