Проблема с проверкой электронной почты - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь проверить поле адреса электронной почты. Я сделал это, используя Regex, и он работает нормально, но проблема в

Я установил e.cancel в True в validating событии, из-за которого он не позволяет пользователю менять фокус, если только пользователь вводит правильный email-идентификатор, даже это не проблема, но он даже не позволит пользователю закрыть окно / форму.

Я имею в виду, если пользователь пытается abort complete transaction, зачем ему / ей вводить действительный идентификатор электронной почты.

Вот мой код -

  Private Sub tbemail_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles tbemail.Validating

    Dim pattern As String = "^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$"


    Dim match As System.Text.RegularExpressions.Match = Regex.Match(tbemail.Text.Trim(), pattern, RegexOptions.IgnoreCase)
    If (match.Success) Then
    Else
        MessageBox.Show("Please enter a valid email id", "Checking")
        e.Cancel = True
    End If
End Sub

1 Ответ

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

Вам следует установить свойство CausesValidation вашей кнопки Cancel на False. Таким образом, щелчок по нему не вызовет событие Validating, и вы можете закрыть форму, даже если данные в последнем элементе управления недействительны. Предполагается, что форма была отображена путем вызова ShowDialog.

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