我试图通过在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事件。
答案 0 :(得分:1)
发生这种情况是因为您正在调试代码。
当您的文本框在那时成为焦点时, GetFocus 事件将调用,很遗憾,您已在 GetFocus 和 LostFocus 事件中设置了一个断点。因此您的表单失去了焦点,并且焦点集中在了Visual Studio上,因此在调试过程完成之后,再次发生 LostFocus 事件,您的文本框将再次获得焦点,因此再次 GetFocus >事件将被调用,并且在调试代码时会创建循环。
我希望这会对您有所帮助。