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(
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(
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.