簡體   English   中英

VB.NET 中的 TextChanged 事件

[英]TextChanged event in 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

每當用戶或以編程方式更改文本時,都會發生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 Then
        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 Then
        UpdatingTextBox = True
        A.Text = ""
        UpdatingTextBox = False
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM