2011-10-11 27 views
2

使用C#winform應用程序的NumericUpDown控件。C#,winform - 在KeyPress上未驗證NumericUpDown最大限制?

將Maximun的值設置爲99.但是,當我鍵入99以上的值時,例如:555,它允許我在值555中鍵入(key_press事件),並且只有當我離開控制時它纔會變回最大值(99) 。我需要的是,用戶不應該允許鍵入大於99的值。而且,默認行爲「上下行動」值不應受此影響。我該怎麼做呢?

+5

((TextBox)numericUpDown1.Controls [1])。MaxLength = 2; –

+0

@ hans Passant:你是偉大的人!它工作正常..., – Dhana

+0

@HansPassant:毫無疑問,這是最好的答案。你爲什麼不把它作爲答案發布? – CharithJ

回答

1

只是快速的想法:

public class StrictNumericUpDown : NumericUpDown 
{ 
    protected override void OnTextBoxTextChanged(object source, EventArgs e) 
    { 
     base.OnTextBoxTextChanged(source, e); 
     if (Value > Maximum) 
     { 
      Value = Maximum; 
     } 
    } 
} 
+0

只是一個想法,但它不會更乾淨,只調用base.OnTextBoxTextChanged(...)如果(值<最大)? – LordWilmore

0

您可以使用KeyDown事件並在觸發時驗證值。

+0

嘗試過,但它允許鍵入值高達3位數,其中IC超過99 ..., – Dhana

+0

對我來說,'KeyDown'不能驗證&否定行動;然而,'KeyPress'是。 –

0

使用

KEYUP

事件。

或者

((TextBox)numericUpDown1.Controls[1]).MaxLength = 2; //正如漢斯提及。