вопрос проверки номера телефона - PullRequest
1 голос
/ 14 января 2020

Я пытаюсь validate номер телефона textbox. Я просто хочу, чтобы пользователь мог вводить только numeric значения и только 10 digits в текстовое поле. Я сделал это, используя событие keypress.

оно отлично работает , но проблема в том, что когда длина входного сигнала достигает 10, он даже не разрешает backspace.

Вот мой код -

    Private Sub tbphone_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbphone.KeyPress
       If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ChrW(Keys.Back)) Or tbphone.Text.Length >= 10 Then e.Handled = True
    End Sub

Теперь может быть сценарий, когда пользователь вводит все цифры правильно, кроме последней. В этом случае он не сможет удалить этот последний di git, возможно, он не сможет ничего сделать в этом текстовом поле, поскольку длина входного текста уже равна 10, а теперь e.handled установлен на true.

Пожалуйста, подскажите, как мне этого добиться ...

Ответы [ 3 ]

2 голосов
/ 14 января 2020

Отказ от ответственности: я не касался vb. net уже довольно давно, скажем, около года. Я просто предоставляю решение, которое я использовал ранее и нашел его полезным.

Вы можете сослаться на: Этот вопрос имеет похожую проблему и был дан ответ.

Относительно ваш предел 10 символов, вы можете установить свойство MaxLength текстового поля либо через графический редактор или код.

Вы можете обратиться к: Как установить свойство MaxLength текстового поля. (Пожалуйста, измените язык для VB вверху страницы.)

1 голос
/ 14 января 2020

Я на самом деле нашел решение своего собственного вопроса, я помещаю его здесь, чтобы, если кто-то застрял, проверяя текстовые поля с той же проблемой, мог получить помощь.

Я установил e.handled в false, если пользователь нажимает BackSpace. И это сработало ...

   Private Sub tbphone_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbphone.KeyPress
       If Not Char.IsDigit(CChar(CStr(e.KeyChar))) Or tbphone.Text.Length >= 10 Then e.Handled = True
       If e.KeyChar = ChrW(Keys.Back) Then e.Handled = False
   End Sub
0 голосов
/ 14 января 2020

я знаю, что это уже решено, но если я могу добавить ответ.

    If (e.KeyChar <= ChrW(47)) Or (e.KeyChar >= ChrW(58)) Then
        If e.KeyChar = vbBack Then
        Else
            e.KeyChar = ChrW(0)
        End If
    Else
    End If

я использую этот код в событии нажатия клавиши

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...