2012-04-25 65 views
0

問題很簡單:我有一個帶有文本框的表單,在其中一個文本框中,我希望用戶輸入正數或負數兩位數數字。我正在尋找一種簡單的方法來強制執行此限制,即無需解析數字並檢查其絕對值是否低於100.正整數/負整數VB.NET textbox maxlength

如果將textbox maxlength設置爲2,則它們不能輸入-9以下的數字。如果最大長度爲3,他們可以輸入99以上的數字。

蒙面文本框沒有解決方案,我不能讓「 - 」文字是可選的,或者至少不是我所知道的。

這個限制最簡單的解決方案是什麼?「如果沒有」 - 「是空的文本框將接受2個輸入字符,否則它接受3」?處理變化事件,看看是否鍵入「 - 」,並重置maxlength似乎有點矯枉過正...

回答

2

你實際上想要一個NumericUpDownControl。使用它,並設置其MinimumMaximum屬性。根本不需要驗證代碼,並輕鬆解決您的問題。

如果你堅持使用TextBox那麼簡而言之,如果不實際檢查數字,你將無法獲得想要的功能。你可以編寫一個UserControl來做到這一點,你可以重用它,但你仍然需要編寫一些驗證代碼。

只需驗證使用ASP.NET/JavaScript樣式驗證的整數。本示例使用Red的ForeColor標籤顯示驗證消息。

private void numberTextBox_TextChanged(object sender, EventArgs e) { 
    int number; 

    bool isValid = int.TryParse(numberTextBox.Text, out number); 

    if (!isValid) { 
     validationLabel.Text = "Must be a two-digit number."; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (number < -99 || number > 99) { 
     validationLabel.Text = "Must be between -99 and 99"; 
     validationLabel.Visible = true; 
     return; 
    } 

    if (isValid) { 
     validationLabel.Visible = false; 
     // Do something else with your number 
     // if you need to. 
    } 
} 

必須編寫代碼來進行驗證沒有任何問題。否則,使用現有的設計器屬性可能無法取得良好效果。

+0

感謝您對NumericUpDownControl的提示。 – MarioDS 2012-04-25 19:32:10

0

檢查文本框的KeyPress事件,並檢查字符是數字或=「 - 」

此代碼,只允許數字和負號,你可以檢查,如果數字是大於100

private Sub Textbox1_KeyPress (ByVal sender as object, ByVal e as KeyPressEventArgs) 

    If (e.IsDigit(e.KeyChar) OR e.KeyChar = '-') Then 
     e.Handled = false 
    End If 

End Sub 
+0

好吧,那會限制用戶放入除數字或減號以外的任何其他字符,但我捕捉到Integer.parse()引發的異常,以查看是否有其他輸入。不管怎麼說,還是要謝謝你 :) – MarioDS 2012-04-25 20:14:19