我想通过不接受除00到60之间的整数之外的任何内容来验证文本框中的用户输入。
条件:
numericupdown
中执行此操作,但由于某种原因我无法使用它。这是代码,实际上它正在工作。我唯一的问题是我无法将其应用于20个文本框,它只能在tb_hour_1文本框中工作,我可以在此代码行tb_hour_1.text
中执行某些操作而不是指示Dim num As Integer = Integer.Parse(String.Format("{0}{1}", If(Tb_Hour_1.Text = String.Empty, "", Tb_Hour_1.Text), e.KeyChar.ToString()))
。
代码:
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
答案 0 :(得分:2)
您应该为此目的更好地创建UserControl。它验证输入和范围,而不是创建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
答案 1 :(得分:2)
对所有TextBox使用公共事件处理程序是好的。只需用演员表替换Tb_Hour_1,即:
Ctype(sender,TextBox)