Вы не должны проверять адреса электронной почты с помощью регулярных выражений .
Вы должны использовать класс MailAddress
вместо:
Sub New(ByVal email As String)
New MailAddress(email).ToString()
End Sub
Класс MailAddress
использует анализатор BNF для проверки адреса и выдает FormatException
, если адрес недействителен.
Ваше регулярное выражение будет отклонять действительные адреса, такие как admin@mta.info
.
Чтобы ответить на ваш вопрос, событие вызывается до того, как в поле WithEvents
появится значение.
Вот что происходит, когда ваш код выполняется:
New Email(TextBox1.Text)
- Объект Email
создан, и конструктор вызывает событие.
На данный момент событие не имеет обработчиков, поэтому событие ничего не делает.
myEmail = ...
Новый объект Email
назначается полю myEmail
и добавляется обработчик событий.
Невозможно обойти эту проблему, потому что вы не можете получить ссылку на объект до завершения его конструктора.
Вместо этого вы должны избавиться от события и сделать поле myEmail
свойством с вашим кодом в установщике свойств