VB.NET中的TextChanged事件
我有两个基本的文本框,比如A和B。我想输入一个文本框来清除另一个文本框的任何输入。例如,A中的类型123。现在B中的类型456应该包含456,A应该为空。然而,我在B中收到56,A是空的。似乎B的第一个输入用于触发TextChanged,并且只存储其余的输入。如何将第一个输入传递到文本框 以下是我的VB.NET代码:VB.NET中的TextChanged事件,vb.net,Vb.net,我有两个基本的文本框,比如A和B。我想输入一个文本框来清除另一个文本框的任何输入。例如,A中的类型123。现在B中的类型456应该包含456,A应该为空。然而,我在B中收到56,A是空的。似乎B的第一个输入用于触发TextChanged,并且只存储其余的输入。如何将第一个输入传递到文本框 以下是我的VB.NET代码: Public Sub A_TextChanged(sender As Object, e As TextChangedEventArgs) Handles A.TextChange
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
每当用户或以编程方式更改文本时,就会发生
TextChanged
事件
在您的例子中,您的A_TextChanged
eventhandler正在更改B的文本,因此调用B_TextChanged
添加一些Debug.WriteLine
语句可能有助于您了解正在发生的事情:在文本框中键入时,很难单步执行调试器
要解决此问题,请使用布尔标志,以便在从某个事件处理程序调用时不会修改另一个文本框。例如(即兴和未经测试):
哇,我没有把事情看得够远。这很尴尬,但这是机器背后逻辑的另一个例子。谢谢JoeI,我们发布了几乎完全相同的答案,即使是解释也一样!虽然你比我快9分钟+1 :)
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