2017-04-07 4 views
0

TextBox1.TextChangedイベントに問題があります。 私のコードは:TextBox1.TextChangedイベントでMsgBoxが2回表示される

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    MsgBox("txt was changed") 
    TextBox1.Clear() 
End Sub 

問題は、メッセージボックスが二回表示されていることですが、私はそれを一度だけを表示し、テキストボックスをクリアしたいです。どうやってやるの?

+0

再度イベントハンドラへの呼び出しをクリアする – Steve

+0

はい私はそれを知っています私はテキストボックスをきれいにして、msgboxを1回だけ表示したいのですが、それはできますか? –

答えて

4

二つの方法:

一時的に再び発火イベントを防止するためのハンドラを削除します。

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    MsgBox("txt was changed") 
    RemoveHandler TextBox1.TextChanged, AddressOf TextBox1_TextChanged 
    TextBox1.Clear() 
    AddHandler TextBox1.TextChanged, AddressOf TextBox1_TextChanged 
End Sub 

または

イベントは自身から発信されたかどうかを確認するためにフィールドを作成します。

Dim textBoxAlreadyChanging As boolean = False 

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    If Not textBoxAlreadyChanging Then 
     MsgBox("txt was changed") 
     textBoxAlreadyChanging = True 
     TextBox1.Clear() 
     textBoxAlreadyChanging = False 
    End If 
End Sub 
+0

その仕事に感謝します。D –

+0

興味のあるものはどれですか? –

+0

第1の方法は完璧であり、第2には、感謝egain:D –

関連する問題