2010-02-22 23 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(); 
    } 
} 
相關問題