WinForm: Datenbindung mit Rückgabe bei Änderung

21/10/2008 - 19:04 von Andreas Gräfe | Report spam
Hallo,

ich habe eine Winanwendung, in der ein Objekt an die Controls wie
Textboxen, Listboxen, ... gebunden werden soll. Dies geht ja
normalerweise mit control1.DataBinding.Add(...). Wenn nun die Inhalte
einer Textbox geàndert werden, wàre es super, wenn der entsprechend
gebundene Inhalt auch geàndert wird. In der Klasse Binding habe ich die
Methode WriteValue() gefunden. Diese Methode regelt eigentlich genau
das, was ich brauche. Gibt es eine Stelle, wo ich einstellen kann, dass
dies automatisch geschieht.

Falls nicht, muss ich ja die entsprechenden Events abfangen und die
Daten manuell àndern.

Andreas
 

Lesen sie die antworten

#1 Frank Dzaebel
21/10/2008 - 20:48 | Warnen spam
Hallo Andreas,

ich habe eine Winanwendung, in der ein Objekt an die Controls wie
Textboxen, Listboxen, ... gebunden werden soll. Dies geht ja
normalerweise mit control1.DataBinding.Add(...). Wenn nun die Inhalte
einer Textbox geàndert werden, wàre es super, wenn der entsprechend
gebundene Inhalt auch geàndert wird.



Zunàchst musst Du uns sagen, wann
*genau* die Änderung wirklich geschehen
soll. Bei jeder Text-Änderung, bei jedem
Wechsel des Controls, oder vielleicht bei
jedem Wechsel der Binding-Position.
Oder vielleicht nur (was eher Standard ist),
wenn der Benutzer einen Save-Button klickt.

Für den Save-Button bràuchtest Du nicht
mal eine Zeile Code selber schreiben, wenn
Du über das Datenquellen-Fenster das Control
in die Form ziehst.

Auch sollte man bedenken, dass ungültige
Eingaben nicht persistiert werden sollten
(und teilweise nicht können), dementsprechend
ist das Validating-Ereignis z.B. ein guter Ausgangspunkt:

[Beispiel-Validierung mit dem ErrorProvider]
http://dzaebel.net/ValidationExample.htm

Das Sichern (Updaten) selber ist meist nur
etwas wie:

this.Validate();
this.personBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.frankDataSet);

Andere Ereignisse sind zum Beispiel
(person ist der Tabellenname hier) :
personBindingSource.CurrentItemChanged
personBindingSource.PositionChanged


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen