обработка исключений для отображения MessageBox при нажатии кнопки вычисления - PullRequest
0 голосов
/ 04 апреля 2020

Это форма

Я разработал эту форму Windows Форма заявки. Если нажата кнопка вычисления и в текстовом поле нет текста, я использовал блок try catch, чтобы показать окно сообщения об ошибке. Но когда я нажимаю кнопку, не вводя текст в текстовое поле, ничего не происходит. Вот мой код:

    Dim textBox As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    'throws an exception if text box input is empty
    Try
        textBox = CStr(TextBox1.Text)
    Catch ex As Exception
        MessageBox.Show("enter text in text box")
        TextBox1.Focus()
    End Try

    'if there's no error execute some code below

End Sub

1 Ответ

1 голос
/ 04 апреля 2020

Правильный способ справиться с этим - использовать событие Validating для TextBox. Вы обрабатываете событие, и в нем вы проверяете данные и устанавливаете e.Cancel в True, если оно терпит неудачу. Это предотвратит потерю фокуса поля до ввода правильных данных. Затем вы можете вызвать ValidateChildren в вашем Button.Click обработчике событий, чтобы принудительно проверить все элементы управления, даже если они не получили фокус. Он вернет Boolean, который указывает, все ли дети прошли проверку или нет.

Private Sub TextBox1_Validating(sender As Object, e As CancelEventArgs) Handles TextBox1.Validating
    If TextBox1.Text.Trim() = String.Empty Then
        MessageBox.Show("Please enter some text")
        e.Cancel = True
    End If
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If ValidateChildren() Then
        'All data is valid so proceed to use it.

        Dim str = TextBox1.Text
        '...
    End If
End Sub
...