2015-07-03 34 views
1

我想不接受任何東西,除了整數從00到60文本框只能接受整數從00 - 60

條件來驗證一個文本框用戶輸入:

  1. 如果用戶輸入0或者什麼都不輸入,那麼系統應該將它視爲00(注意我用0填充了它。
  2. 我知道我也可以在numericupdown中這樣做,但由於某些原因,我無法使用它。
  3. 我需要在20個文本框中應用這個。

這是代碼,實際上它正在工作。我唯一的問題是我不能將它應用於20個文本框,它只在tb_hour_1文本框中工作,有什麼我可以做的,而不是在代碼Dim num As Integer = Integer.Parse(String.Format("{0}{1}", If(Tb_Hour_1.Text = String.Empty, "", Tb_Hour_1.Text), e.KeyChar.ToString()))的這一行中指示tb_hour_1.text

代碼:

Private Sub Tb_Hour_1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Tb_Minute_2.KeyPress, Tb_Minute_1.KeyPress, 
    Tb_Hour_2.KeyPress, Tb_Hour_1.KeyPress 

    Dim Min_Num As Integer = 0 
    Dim Max_Num As Integer = 60 

    If e.KeyChar <> ControlChars.Back Then 
     'allow backspace for deleting 
     e.Handled = Not Char.IsNumber(e.KeyChar) 
     'allow numbers only 
     If Not e.Handled Then 
      Dim num As Integer = Integer.Parse(String.Format("{0}{1}", If(Tb_Hour_1.Text = String.Empty, "", Tb_Hour_1.Text), e.KeyChar.ToString())) 
      If num < Min_Num OrElse num > Max_Num Then 
       e.Handled = True 
      End If 
     End If 
    End If 
End Sub 
+1

對所有文本框使用通用事件處理程序是好的。只需通過強制替換Tb_Hour_1即Ctype(發件人,文本框)即可。 – Graffito

+0

你有'Tb_Hour_1'使用'發件人'或一個NumericUpDown的硬編碼引用 – Plutonix

+0

@Graffito,您的評論適合我。請回答這個問題,以便我可以將其作爲接受的答案。 –

回答

2

使用的所有文本框一個共同的事件處理好。只需通過演員代替Tb_Hour_1,即:

Ctype(sender,TextBox) 
+0

謝謝!此代碼適用於我。 –

2

你應該更好地爲此創建一個用戶控件。它驗證輸入和範圍,而不是創建20個文本框,然後可以使用自定義控件。此外,MaskedTextBox控制也可以用來避免檢查文本的長度,它也只能允許數字。

此外,快捷方式可能是列出了所有剩餘的控件的事件是這樣的:

Private Sub Tb_Hour_1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Tb_Minute_2.KeyPress, Tb_Minute_1.KeyPress, 
    Tb_Hour_2.KeyPress, Tb_Hour_1.KeyPress, ....... further control events