2017-04-07 1 views
0

Ich habe ein Problem mit dem TextBox1.TextChanged-Ereignis. Mein Code:TextBox1.TextChanged Ereignis zeigt MsgBox zweimal

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

Das Problem ist, dass die MsgBox zweimal gezeigt wird, aber ich will es nur einmal zeigen und die TextBox löschen. Wie kann ich das machen?

+0

Löschen löscht erneut einen Aufruf an Ihren Event-Handler – Steve

+0

ja ich weiß tha t aber ich möchte die Textbox säubern und die msgbox nur einmal zeigen, kann ich das tun? –

Antwort

4

Zwei Möglichkeiten:

vorübergehend den Handler entfernen das Ereignis wieder Brennen zu verhindern:

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 

oder

Erstellen Sie ein Feld zu überprüfen, ob das Ereignis von selbst stammt:

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

danke seine Arbeit perfekt: D –

+0

Aus Interesse, welche hast du benutzt? –

+0

die 1. Methode ist perfekt dann die 2., dank Egain: D –

Verwandte Themen