2013-12-08 157 views
-1

我正在嘗試處理我的文本框輸入值。我希望用戶只能使用KeyPress輸入範圍內的數字。防爆。 (0 - 1000)。我有防止任何輸入不是數字的代碼。我無法弄清楚如何防止用戶輸入一個不在一定範圍內的值。文本框輸入數字範圍

Private Sub txt2x6LumberQuanity_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txt2x6LumberQuanity.KeyPress 
    If Not Char.IsNumber(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then 
     e.Handled = True 
    End If  
End Sub 

有沒有人有任何建議。我花了幾個小時尋找,但似乎無法找到正確的解決方案。

+0

可以使用驗證事件,以檢查焦點移動之前離開,或者更好的是,使用'ErrorProvider'對象,以指示這是一個錯誤。 – ja72

+0

您可以在這裏使用['MaskedTextBox'](http://www.dotnetperls.com/maskedtextbox)。 – ja72

+1

防止用戶輸入字符是一回事;防止他們進入超出範圍的整數是另一回事。對於用戶來說,雙擊一個數字鍵並丟失擊鍵是令人沮喪的。更好的做法是展示一個非阻塞警報(不會竊取焦點)告訴用戶出了什麼問題。 –

回答

-1

你可以將其添加到按鍵事件處理

If Char.IsNumber(e.KeyChar) Then 
     Dim newtext As String = TextBox1.Text.Insert(TextBox1.SelectionStart, e.KeyChar.ToString) 
     If Not IsNumeric(newtext) OrElse CInt(newtext) > 1000 OrElse CInt(newtext) < 0 Then e.Handled = True 
    End If 
1

我會用這個效果的文字改變,ErrorProvider組件:

有效入境

OkValid

無效項

NotValid

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public int User2x6LumberQuantity 
    { 
     get 
     { 
      int x; 
      if (int.TryParse(txt2x6LumberQuantity.Text, out x)) 
      { 
       return x; 
      } 
      return 0; 
     } 
    } 

    private void txt2x6LumberQuantity_TextChanged(object sender, EventArgs e) 
    { 
     errorProvider1.SetError(txt2x6LumberQuantity, null); 
     int x=User2x6LumberQuantity; 
     if (x<0||x>1000) 
     { 
      errorProvider1.SetError(txt2x6LumberQuantity, "Value Must Be (0-1000)"); 
      continueButton.Enabled=false; 
     } 
     else 
     { 
      continueButton.Enabled=true; 
     }    
    } 
}