Текст заполнителя Winforms перезаписан - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь передать текст заполнителя элемента управления Textform winforms путем программной установки текста соответствующего элемента управления во время событий GetFocus и LostFocus.Однако по какой-либо причине элемент управления никогда не отражает обновленный текст.

Это то, что я пытаюсь:

Private Sub TextBoxEmail_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles TextBoxEmail.GotFocus
    Dim this As TextBox = DirectCast(sender, TextBox)
    With this
        If .Text = "Email Address" Then
            .ForeColor = Bootstrap.Utilities.Color.TextBody
            .Text = String.Empty
        End If
    End With
End Sub

Private Sub TextBoxEmail_LostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles TextBoxEmail.LostFocus
    Dim this As TextBox = DirectCast(sender, TextBox)
    With this
        .ForeColor = Bootstrap.Utilities.Color.TextLight
        If String.IsNullOrWhiteSpace(.Text) Then
            .Text = "Email Address"
        End If
    End With
End Sub

Странно то, что если я устанавливаю точку останова в событии LostFocusобработчик и пошаговое выполнение кода с помощью ярлыка F11, он постоянно циклически перебирает события GotFocus и LostFocus.

1 Ответ

1 голос
/ 31 мая 2019

Это происходит потому, что вы отлаживаете код.

Когда ваше текстовое поле получает фокус в это время GetFocus вызовет событие, к сожалению, вы установили точку останова в GetFocus а также событие LostFocus .поэтому ваша форма теряет фокус, и этот фокус попадает в визуальную студию, поэтому после этого снова будет происходить событие LostFocus после того, как процесс отладки завершится, ваше текстовое поле снова сфокусируется, и снова GetFocus событиевызовет, и его процесс создаст Cycle , пока вы отлаживаете код.

Надеюсь, это поможет вам.

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