Winforms占位符文本被覆盖

时间:2019-05-31 05:47:13

标签: vb.net winforms

我试图通过在GetFocus和LostFocus事件期间以编程方式设置相应控件的文本来提供Winforms Textbox控件占位符文本。但是,无论出于何种原因,该控件都不会反映出更新后的文本。

这就是我要尝试的:

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 个答案:

答案 0 :(得分:1)

发生这种情况是因为您正在调试代码。

当您的文本框在那时成为焦点时, GetFocus 事件将调用,很遗憾,您已在 GetFocus LostFocus 事件中设置了一个断点。因此您的表单失去了焦点,并且焦点集中在了Visual Studio上,因此在调试过程完成之后,再次发生 LostFocus 事件,您的文本框将再次获得焦点,因此再次 GetFocus >事件将被调用,并且在调试代码时会创建循环

我希望这会对您有所帮助。