我有两个基本的文本框,比如说A和B。我想输入到一个文本框以清除对另一个文本框的任何输入。例如,在A中键入123。现在在B中键入456。B应该包含456,而A应该为空。但是,我在B中收到56,而A为空。似乎B的第一个输入用于触发TextChanged,并且仅存储其余输入。如何将第一个输入传递给文本框?
这是我的VB.NET代码:
Public Sub A_TextChanged(sender As Object, e As TextChangedEventArgs) Handles A.TextChanged
B.Text = ""
End Sub
Public Sub B_TextChanged(sender As Object, e As TextChangedEventArgs) Handles B.TextChanged
A.Text = ""
End Sub
答案 0 :(得分:3)
无论用户还是通过编程方式更改文本,都会发生TextChanged
事件。
在您的情况下,您的A_TextChanged
事件处理程序正在更改B的文本,因此B_TextChanged
被称为…
添加一些Debug.WriteLine
语句可以帮助您了解正在发生的事情:在TextBox中键入内容时,很难通过调试器进行调试。
要解决此问题,请使用布尔值标志,这样当您从一个事件处理程序中调用该文本框时,便无需修改另一个文本框。例如。 (袖口且未经测试):
Private UpdatingTextBox As Boolean
Public Sub A_TextChanged(sender As Object, e As TextChangedEventArgs) Handles A.TextChanged
If Not UpdatingTextBox
UpdatingTextBox = True
B.Text = ""
UpdatingTextBox = False
End If
End Sub
Public Sub B_TextChanged(sender As Object, e As TextChangedEventArgs) Handles B.TextChanged
If Not UpdatingTextBox
UpdatingTextBox = True
A.Text = ""
UpdatingTextBox = False
End If
End Sub