12. Mai 2009

Toolbar/Menü-Button-Event und BindingSource - Problem

Problem: In einem Form werden Daten nicht persistiert, die über an eine BindingSource gebundenes Control editiert wurden, wenn über einen Toolbar- oder Menu-Button das Speichern ausgelöst wird.

Ursache: Toolbars oder Menüs wechseln den Focus nicht. Das ValidateEvent im Control wird deswegen nicht ausgelöst und kann seine Änderungen nicht an die BindingSource schicken. Der EndEdit-Aufruf auf der BindingSource ist dann wirkungslos.

Lösung: Bevor das Speichern über ein Event aus einem Toolbar- oder Menüpunkt ausgelöst wird, muss dort explizit der Fokus geholt werden über die Focus()-Methode. Danach sorgt ein Aufruf der EndEdit-Methode auf der BindingSource auch dafür, dass die eingebenen Daten in die Quelle (DataSource/DataTable) gelangen.

Keine Kommentare: