EventHandler bei einer ComboBox

Planet_Mars

Mitglied
Hallo,

ich hab mal wieder eine Frage.

Ich hab in einem Formular eine Combobox die mit 4 Werten gefüllt ist. Die Combobox bekommt einen Anfangswert aus einer DB zugewiesen.
Code:
combobox1.Text = status;
Jetzt möchte ich in Abhängigkeit zu dem selektierten Inhalt eine andere Combobox steuern. Z.B. Combobox1 hat den Wert "offen", die Combobox2 den Wert "0 %", nun wird der Wert der Combobox1 in "abgeschlossen" geändert, also muss der Wert der Combobox2 auf "100 %" gesetzt werden. Dazu brauche ich den aktuellen Wert aus der Combobox1.

Ich hab es schon mit dem EventHandler "SelectionChangeCommitted" versucht. Das funktioniert so weit auch, leider kann ich in der generierten EventHandlerMethode den aktuellen Wert nicht auslesen. Ich versuche das so:
Code:
string status = combobox1.SelectedText.ToString();

Leider bekomm ich dann immer den Anfangswert, den ich der Combobox zugewiesen habe. Wie bekomme ich den aktuell eingegebenen Wert?

Danke
und Gruß
Marc
 
Hallo LordDeath,

das hab ich auch schon versucht, leider kein Erfolg, ich bekomme immernoch den Wert, der als letztes in der Combobox enthalten war.
Kann das etwas damit zu tun haben, dass ich die Combobox mehrmals in einer for-Schleife erstelle?

Danke
Gruß
Marc
 
Warum erstellt Du sie in einer for Schleife?
Du könnest sie, nach dem erstellen, in ein Controlarray ablegen.
Somit solltest Du jedes unkomplizierter ansprechen konnen.

(
Kleiner Tipp: In Comboboxen kann man auch Objekte wie
Code:
enum Lang { Deutsch = 1, Englisch };
ArrayList LangList = new ArrayList();
LangList.Add( Lang.Deutsch );
LangList.Add( Lang.Englisch );
cbxSprache.DataSource =  LangList;
speichern
)
 
Ich erstelle Sie in einer for-Schleife, da ich damit ein TableLayoutPanel fülle.
Das TableLayoutPanel dient als Auflistung aller Daten in Tabellenform. Ich will kein ListView benutzen, da keiner den Eindruck haben soll, es ist ein seperates Fenster.

Das Problem ist, dass ich die Daten in Abhängigkeit von unterschiedlichen Tabellen aus Access hole und somit einem Objekt mehrere Objekte aus einer anderen Tabelle zugeordnet sein können.

Mein Code, mit dem ich die ComboBox erstelle:
Code:
int count = tabelle1.Count - 1;
for (int a = 0; a <= count; a++)
{
Object= (Object)Arraylist1[a];
string status = Object.GetObjektStauts();

this.combobox1 = newComboBox();
this.combobox1.Items.AddRange(newobject[] 
{"abgeschlossen","in Bearbeitung","offen","verworfen"});
this.combobox1.Size = newSize(100, 20);
this.combobox1.DropDownStyle = ComboBoxStyle.DropDownList;
combobox1.SelectionChangeCommitted += newEventHandler (combobox1_SelectedValueChanged);
 
combobox1.Name = "combobox1 " + zaehler; 
//Zaehler ist mein Zeilenzahler, damit ich 
//immer eine Zeile weiter nach unten springen kann

combobox1.Text = status;
tableLayoutPanel.Controls.Add(combobox1, 9, zaehler);
}

Danke.
 
Ich hab auch mal ein bisschen weiter ausprobiert und habe gemerkt, dass egal welche combobox, oder auch Checkbox (sind auch in dem TableLayoutPanel enthalten) bekomme ich einen falschen Wert. D.h., dass er eben immer den Wert der letzten erstellten Checkbox oder Combobox im Speicher hält.

Habt ihr einen anderen Vorschlag wie ich eine tabellenartige Auflistung erstellen kann, in die ich auch Checkboxen, Comboboxen und auch Labels einfügen kann? Oder wie ich die Steuerelemente nicht in einer Schleife erstelle muss?

Bin für jeden Vorschlag offen.
 
Vorschlag:
Und wenn Du sie ein ControlArray packst?
Sobald Du sie von dort aus in dein TableLayoutPanel kopierst hast Du sie Referenziert. Das heist wenn Du deine Comboboxen in deinem ControlArray veränderst, verändern sich die Comboboxen in deinem TableLayoutPanel auch mit.
Dann solltest Du bessere Chancen haben herauszufinden was wo hingehört und von wo Du es ausliest.

MFG cosmo
 
Zurück