Laden...

Warum verändern mehrere ComboBoxen, die an dieselbe Liste gebunden sind, ihren Wert gleichzeitig?

Erstellt von Kalle_84 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.728 Views
K
Kalle_84 Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren
Warum verändern mehrere ComboBoxen, die an dieselbe Liste gebunden sind, ihren Wert gleichzeitig?

Hallo Zusammen,

ich habe folgendes Problem.

Ich habe ein Form mit mehreren Comboboxen. Beim Laden der Form wird eine Liste über DataSource in jede der Comboboxen geladen. Der anwender sollte jetzt in jeder Combobox etwas auswählen können. Doch wird in einer Combobox etwas ausgewählt, wird automatisch ohne das ich das will, dieser Wert in allen anderen Boxen ebenfals ausgewählt.

Ich hoffe mir kann jemand helfen, denn ich habe keine Ahnung warum das so ist.

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo Kalle_84,
hat den jede Combobox eine eigene DataSource oder teilen sich mehrere Comboboxen eine DataSource?

Viele Grüße,
telfa

K
Kalle_84 Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren

Hallo,

also ich habe ein List<string> LISTE
und dann wird dieser den comboboxen zugewiesen:

combobox1.DataSource = LISTE;
combobox2.DataSource = LISTE;
:
:

Wenn das das Problem sein sollte, wie mach ich das dann richtig.

Vielen Dank!

C
168 Beiträge seit 2010
vor 10 Jahren

Ein object also z.B. eine Liste werden grundsätzlich als Referenz behandelt und nicht als Kopie, sogesehen gibst du der ComboBox ein Link zur Quellen, löscht du nun bei einer ComboBox etwas wird dies an die Quelle weitergeleitet in dem Fall die List<string>. Da beide aber als Quelle deine List haben wird das Element auch aus der zweiten ComboBox gelöscht.

Entweder du füllst die ComboBoxen selbst indem du die List mit einer Schleife durchläufst und anschließend

ComboBox.Items.Add(WERT)

nutzt oder du erstellst zweite List<string>

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Crone,

dass überall Referenzen auf ein und dieselbe Liste verwendet werden, ist richtig. Aber der Vorschlag, die Liste zu kopieren, ist unangebracht. Genauso wie die Alternative, die ComboBoxen mit Add zu füllen. Hier muss und sollte man einfach nur für jede ComboBox einen eigenen BindingContext setzen, um sie zu entkoppeln:

cbx1.BindingContext = new BindingContext ();
cbx2.BindingContext = new BindingContext ();
...

herbivore

C
168 Beiträge seit 2010
vor 10 Jahren

Cool wieder was dazu gelernt 😃

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

T
156 Beiträge seit 2012
vor 10 Jahren

Da möchte ich mich Crone anschließen.

K
Kalle_84 Themenstarter:in
13 Beiträge seit 2013
vor 10 Jahren

Vielen Dank für die schnellen antworten.
Jetzt läufts.

Danke!