e.Cancel срабатывает, но другой код также срабатывает, когда происходит событие щелчка - PullRequest
0 голосов
/ 09 марта 2012

Форма имеет много кнопок. Одна из этих кнопок содержит код для обновления TableAdapterManager. Один из множества элементов управления TextBox имеет код в обработчике событий Validating. Существует код, обеспечивающий правильное форматирование номера телефона в США.

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

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

Я бы хотел, чтобы код кнопки не срабатывал.

Вот код для события проверки TextBox:

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

    ' Make sure the phone is formatted correctly.
    '--------------------------------------------
    If PhoneFormat(TextBoxPrimaryPhone.Text) = "Fix Phone Number" Then

        ' Alert the user.
        '----------------
        MessageBox.Show("Please enter a 7 or 10 digit phone number.", _
                        "Entry Error", _
                        MessageBoxButtons.OK, _
                        MessageBoxIcon.Error)

        e.Cancel = True
    Else

        ' Format according to the length of the phone number entered by the user.
        '------------------------------------------------------------------------
        TextBoxPrimaryPhone.Text = PhoneFormat(TextBoxPrimaryPhone.Text)
    End If
End Sub

Какое дополнительное кодирование мне нужно включить, чтобы фокус оставался на TextBox?

1 Ответ

1 голос
/ 09 марта 2012

После вызова e.Cancel = True выполните следующие действия, чтобы установить фокус вызывающего текстовое поле:

TextBoxPrimaryPhone.Focus()

В обработчике событий нажатия кнопки вы можете сделать это:

    TextBoxPrimaryPhone_Validating(sender, New System.ComponentModel.CancelEventArgs)

    If Not TextBoxPrimaryPhone.Focused Then

        'Do Work

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