faiqaa Ответов: 1

Как проверить номер телефона ( должен быть не менее 9 номеров длиной и не более 11)


Я не могу проверить номер телефона, который должен быть длиной не менее 9 цифр и не более 11 с помощью visual basic. Если я набираю 1 цифру, это дает мне ошибку ("телефонные номера должны быть длиной не менее 9 цифр"), но проблема в том, что я еще не нажал кнопку отправки. Эта ошибка должна появиться после того, как пользователь нажмет кнопку отправки не заранее.

Что я уже пробовал:

If Asc(e.KeyChar) <> 8 Then
           If Asc(e.KeyChar) < 46 Or Asc(e.KeyChar) > 57 Or (Asc(e.KeyChar) < 48 And Asc(e.KeyChar) > 46) Then
               e.Handled = True
               MessageBox.Show("Invalid character")
           End If


           If txtBoxPhoneNumber.Text.Length < 9 Then

               MsgBox("Phone numbers must be at least 9 digits long")
               If txtBoxPhoneNumber.Text.Length > 11 Then
                   MsgBox("Phone numbers must be of a maximum of 11 digits long")
               End If

               txtBoxPhoneNumber.Text = ""
               txtBoxPhoneNumber.Focus()

               Exit Sub

           End If

1 Ответов

Рейтинг:
9

Jochen Arndt

Вы должны выполнить проверку вне функции проверки, которая вызывается для каждого нажатия клавиши. Это происходит, например, когда пользователь активирует кнопку в форме, содержащей поле ввода.

Обратите также внимание, что в вашей проверке длины есть еще одна ошибка:
Вы проверяете длинные числа только в пределах короткого условия, так что это никогда не будет правдой.

Поместите что-то подобное в обработчик, который выполняется при нажатии кнопки OK (или любого другого события / кнопки):

If txtBoxPhoneNumber.Text.Length < 9 Then
    MsgBox("Phone numbers must be at least 9 digits long")
    txtBoxPhoneNumber.Focus()
End If
If txtBoxPhoneNumber.Text.Length > 11 Then
    MsgBox("Phone numbers must be of a maximum of 11 digits long")
    txtBoxPhoneNumber.Focus()
End If
Обратите также внимание, что я удалил очистку поля ввода, чтобы пользователь мог редактировать вместо того, чтобы снова вводить полный номер.