只能接受00 - 60范围内的整数的文本框

时间:2015-07-03 06:39:18

标签: vb.net validation textbox

我想通过不接受除00到60之间的整数之外的任何内容来验证文本框中的用户输入。

条件:

  1. 如果用户输入0或输入任何内容,系统应将其视为00(注意我用0填充它。
  2. 我知道我也可以在numericupdown中执行此操作,但由于某种原因我无法使用它。
  3. 我需要在20个文本框中应用它。
  4. 这是代码,实际上它正在工作。我唯一的问题是我无法将其应用于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
    

2 个答案:

答案 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)