VB.NET中的TextChanged事件

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

我有两个基本的文本框,比如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.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