Benutzer mit den meisten Antworten
TextBox_Leave wird zweimal ausgelöst

Frage
-
Hallo alle,
ich habe auf einer Userform eine Textbox, bei der nach Eingabe eines Wertes gegen eine Datenbank geprüft werden soll, ob andere Werte bereits vorhanden sind.
Mein Problem dabei ist, dass wenn ich die Textbox mit Tab verlasse, das Leave- Ereignis einmal ausgelöst wird, beim Klick mit der Maus auf eine z.B. Checkbox, das Ereignis jedoch zweimal ausgelöst wird. Das hat dann zur unangenehmen Folge, das das Resultset der ersten Datenbankabfrage noch offen ist, und das Programm somit bei der zweiten Abfrage auf einen Fehler läuft.
Kann man das abstellen?
Grüße
Heiko
Antworten
-
Hallo Heiko,
für solche Aufgaben ist das Validating Ereignis gedacht.
Unabhängig davon:
Solche Probleme treten u. a. dann auf wenn man den Fokus im Ereignis ändert (siehe Hinweise beim Ereignis).
Um den Code beim Mehrfachaufruf nur einmalig aufzurufen, setze zu Beginn eine Variable:
bool isValidating; private void theControl_Validating(object sender, CancelEventArgs e) { if (isValidating) return; isValidating = true try { // ... Tests ... } finally { isValidating = false; } }
Gruß Elmar
- Als Antwort markiert Heiko Sturm Donnerstag, 15. November 2012 14:18
Alle Antworten
-
Hallo Heiko,
für solche Aufgaben ist das Validating Ereignis gedacht.
Unabhängig davon:
Solche Probleme treten u. a. dann auf wenn man den Fokus im Ereignis ändert (siehe Hinweise beim Ereignis).
Um den Code beim Mehrfachaufruf nur einmalig aufzurufen, setze zu Beginn eine Variable:
bool isValidating; private void theControl_Validating(object sender, CancelEventArgs e) { if (isValidating) return; isValidating = true try { // ... Tests ... } finally { isValidating = false; } }
Gruß Elmar
- Als Antwort markiert Heiko Sturm Donnerstag, 15. November 2012 14:18
-