VB.NET中的TextChanged事件

时间:2019-01-30 18:54:34

标签: vb.net

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

1 个答案:

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