Laden...

ComboBox Änderungen sofort übernehmen

Letzter Beitrag vor 16 Jahren 5 Posts 1.458 Views
ComboBox Änderungen sofort übernehmen

Hallo NG,

ich habe eine ComboBox (DropDownList) mit Werten gefüllt. Leider werden Änderungen immer erst wirksam, wenn ich die ComboBox in meiner Form verlasse. Ich hätte gerne daß nach ListIndexChanged meine Änderungen direkt übernommen werden.

Im ListIndexChanged habe ich es mit meineBindingSource.EndEdit() versucht, klappt aber auch nicht.

Gruß,
Robert

Gefährlich ist's den Leu zu wecken,
verderblich ist des Tigers Zahn,
doch der größte Schreck der Schrecken,
das ist der Mensch in seinem Wahn.

An was und wie hast du den deine Comboboc gebunden?

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

ComboBox Änderungen sofort übernehmen

Hallo Andreas,

vielen Dank für Deine rasche Antwort.

Die Bindung erfolgt mit SelectedValue
projectEntityBindingSource - SchneelastEntity.Schneelastzone

Die ComboBox wird gefüllt wie folgt:

this.schneelastzoneRmComboBox.DataSource = schneelastzone.GetSchneelastzonen();
this.schneelastzoneRmComboBox.DisplayMember = "DisplayMember";
this.schneelastzoneRmComboBox.ValueMember = "ValueMember";

Gruß,
Robert

Gefährlich ist's den Leu zu wecken,
verderblich ist des Tigers Zahn,
doch der größte Schreck der Schrecken,
das ist der Mensch in seinem Wahn.

Hallo Robert,
hatte leider grade etwas viel zu tun.

Mich verwirrt das BindingSource etwas.
Denn du bindest wie folgt:


his.schneelastzoneRmComboBox.DataSource = schneelastzone.GetSchneelastzonen();

Statt wie folgt:


this.schneelastzoneRmComboBox.DataSource = projectEntityBindingSource;

Dann sollte auch meineBindingSource.EndEdit() ohne weiteres gehen.

Ansonsten ist halt DataBinding immer Default DataSourceUpdateMode.OnValidation also so das änderungen erst dann gebunden werden wenn der Focus sich verändert.
Kannst dir auch das EndEdit() spaaren und es wie folgt erledigen:


this.schneelastzoneRmComboBox..DataBindings.Add("ValueMember", projectEntityBindingSource, "ValueMember", true, DataSourceUpdateMode.OnPropertyChanged);

this.schneelastzoneRmComboBox..DataBindings.Add("Text", projectEntityBindingSource, "DisplayMember", true, DataSourceUpdateMode.OnPropertyChanged);

Das ganze kann man sich auch im VS-Designer zusammenklicken 🙂
Falls es dennoch zu Problemen kommt, bräuchte ich etwas mehr Code.

/PS
DisplayMember und ValueMember entsprechen natürlich dann halt deinen Datenmember.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

ComboBox Änderungen sofort übernehmen

Hallo Andreas,

und wieder mal danke.

Also zum verwirrenden Teil bedarf es einiger Worte:

Die DataSource der ComboBox hole ich mir aus einer Funktion. Diese Funktion liefert eine BindingList<xy> zurück, die zwei Felder zur Verfügung stellt. Diese habe ich sinnigerweise DisplayMember und ValueMember genannt.

projectEntityBindingSource wiederum ist mein echtes BusinessObject, hier werden Daten gespeichert, verändert etc., es handelt sich also nicht um die Liste, die in der ComboBox zur Auswahl steht.

DataSourceUpdateMode.OnPropertyChanged werde ich jetzt mal ausprobieren.

Gruß,
Robert

Gefährlich ist's den Leu zu wecken,
verderblich ist des Tigers Zahn,
doch der größte Schreck der Schrecken,
das ist der Mensch in seinem Wahn.