Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Das TextBox-Steuerelement bietet einige Ereignisse, die sich rund um die Dateneingabe drehen. Eines davon heißt TextChanged – dieses haben wir bereits im Artikel “Das TextBox-Steuerelement” vorgestellt. Während dieses Ereignis bei Eingabe jedes einzelnen Zeichens feuert, benötigen wir auch noch ein Ereignis, das uns mitteilt, wann der Benutzer die Eingabe in ein TextBox-Element abgeschlossen hat – beispielsweise, um nach der Eingabe der Nummer eines Datensatzes in einer Datensatznavigation direkt zum gewünschten Datensatz zu springen oder auch eine Suche nach dem eingegebenen Begriff zu starten. In diesem Artikel zeigen wir, wie das gelingt.
Im Artikel Das TextBox-Steuerelement (www.datenbankentwickler.net/215) haben wir bereits das Ereignis TextChanged vorgestellt. Dieses Ereignis ist praktisch, aber in manchen Fällen benötigen wir doch noch weitere Möglichkeiten zum Programmieren von Textfeldern. Das Ereignis TextChanged feuert nach jeder Änderung des enthaltenen Texts, also auch dann, wenn der Benutzer nur ein Zeichen hinzugefügt oder entfernt hat.
Wenn wir aber beispielsweise wissen möchten, wann die Änderung abgeschlossen ist – also beispielsweise durch Betätigen der Eingabetaste oder der Tabulator-Taste oder durch Verschieben des Fokus auf ein anderes Steuerelement mit der Maus -, dann benötigen wir andere Ereignisse.
Ereignis beim Beenden der Eingabe
Was wir suchen, ist ein Pendant zum Ereignis Nach Aktualisierung beziehungsweise AfterUpdate von Textfeldern unter Microsoft Access.
Im ersten Näherungsschritt wollen wir das Betätigen der Eingabe- oder Tabulatortaste bei der Eingabe in das Textfeld abfangen. Dazu schauen wir uns zunächst an, wann genau beim Betätigen einer dieser Tasten unter Access das AfterUpdate-Ereignis ausgelöst wird. Dabei stellen wir fest, dass dies bereits beim Herunterdrücken der Taste geschieht. Also bauen wir genau dieses Verhalten nach – und zwar mit der KeyDown-Methode.
Dazu legen wir folgendes TextBox-Element an und hinterlegen direkt das Attribut KeyDown mit der Angabe der auszuführenden Ereignismethode:
<TextBox x:Name="txtAfterUpdate" KeyDown="txtAfterUpdate_KeyDown"></TextBox>
Diese soll die folgende Ereignismethode auslösen:
Private Sub txtAfterUpdate_KeyDown(sender As Object, e As KeyEventArgs) Dim txt As TextBox txt = sender Select Case e.Key Case Key.Enter, Key.Tab MessageBox.Show("Der Text lautet ''" & txt.Text & "''") End Select End Sub
Die Methode referenziert das mit dem Parameter sender übergebene auslösende Steuerelement mit der Variablen txt und prüft dann, ob das mit dem Parameter e gelieferte Objekt des Typs KeyEventArgs für die Eigenschaft Key entweder den Wert Key.Enter oder Key.Tab liefert. Ist das der Fall, soll eine Meldung mit dem aktuellen Inhalt des Textfeldes ausgegeben werden.
Das Ergebnis ist für den ersten Zwischenschritt schon nicht schlecht: Wenn wir das Textfeld mit der Eingabe- oder Tabulatortaste verlassen, wird das Ereignis ausgelöst und gibt den aktuellen Text aus (siehe Bild 1).
Bild 1: Ausgabe einer Meldung beim Verlassen des Feldes
AcceptsReturn und AcceptsTab