Entwickler-Ecke

WinForms - Combobox: Was wurde ausgewählt?


P584 - Mi 03.02.10 15:08
Titel: Combobox: Was wurde ausgewählt?
Hallo,

Bin noch Anfänger und habe folgende Frage: Wie kann ich in einer if-Abfrage prüfen, welche Option der Combobox gewählt wurde?

Wenn ich also in der Combobox Achim, Peter und Jürgen zur Auswahl habe, will ich also sagen "wenn Jürgen ausgewählt wurde, dann mache dies und das"

Ich hoffe, ihr versteht was ich meine :P

Gruß Paul


Nemag - Mi 03.02.10 15:42

Hi,

die ComboBox hat die nette Eigenschaft SelectedItem in der das wie der Name schon sagt ausgewählte Item abgefragt werden kann. Wirst halt noch in das entsprechende Format konvertieren müssen mit dem du die Combobox gefüllt hast (Meist eher Strings).


C#-Quelltext
1:
2:
3:
if(comboBox.SelectedItem.ToString() == "Achim")
  Console.WriteLine("Achim wurde ausgewählt.")
else if ...


P584 - Mi 03.02.10 16:07

Sorry, aber wie wäre dass dann z.B. wenn die Combobox "cbb_1" hieße?

wenn ich z.B.

C#-Quelltext
1:
if (comboBox.SelectedItem.ToString(cbb_1.Text) == "1")                    


eingebe, kommt die Fehlermeldung, dass comboBox im aktuellen Kontext nicht vorhanden sei.

:oops:


JüTho - Mi 03.02.10 16:36

Hallo und :welcome:

An dieser Stelle musst du natürlich den Namen deiner ComboBox verwenden.

Aber Namen wie cbb_1 gehören sowieso verboten; da weißt in spätestens 14 Tagen auch du nicht mehr, wozu sie gut ist. Siehe .NET Richtlinien für Namen [http://msdn.microsoft.com/de-de/library/ms229002(VS.80).aspx].

Es gibt als Ereignisse, die das prüfen, SelectedIndexChanged und SelectedValueChanged. Als Eigenschaften, die zur Prüfung verwendet werden können, gibt es SelectedIndex, SelectedItem, SelectedText. Letzteres ist bereits ein String, muss also nicht konvertiert werden.

Allgemeine Hinweise
Ein Ereignis liefert immer den sender mit, der es ausgelöst hat. Damit kann man ihn immer benutzen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
private void NameSelecting_SelectedIndexChanged(object sender, EventArgs e) {
  ComboBox box = sender as ComboBox;
  if (box != null) {
    MessageBox.Show("Ausgewählt wurde " + box.SelectedText);
  }
}

In den meisten Fällen kennt man das Control, das man auswerten will; aber sehr oft ist es nützlich, den sender auf diese Weise bestimmen zu können.

Ich empfehle gerade Anfängern, von vornherein selbst in der SDK-Doku/MSDN/Hilfe zu blättern, welche Eigenschaften/Methoden/Ereignisse angeboten werden. Wähle dazu "Informationen zur Xx-Klasse" und "Alle Member": das liefert viele Hinweise und Beispiele. Auf diese Weise gewinnst du selbst einen Einblick in das, was mit NET möglich ist.

Gruß Jürgen


C#Einsteiger - Fr 22.04.11 15:06

Hallo, ich habe irgendwie auch so ein Problem!

Fülle meine ComboBox.Items.Add("Januar");

bis Dezember.

dann möchte ich sie mit
if (comboBox1.SelectedItem.ToString() == "Januar")
und rufe die sachen ab was er dann erledigen soll sobald Januar ausgewäht wurde.

nur das ganze funktioniert irgendwie nicht bekomme immer einen Fehler!

Wer kann mir vielleicht helfen bin neueinsteiger!

MfG
C#Einsteiger


m-s - Fr 22.04.11 21:38

Bei mir geht das so.
Welchen Fehler bekommst Du denn genau?


xToast - Fr 22.04.11 21:43

Sicher das du den richtigen Namen der Combobox angibst? Ohne den Fehler tappen wir im dunkeln...


Yogu - Sa 23.04.11 16:29

Hallo user profile iconC#Einsteiger,

wenn der Benutzer noch kein Element ausgewählt hat, ist die Eigenschaft SelectedItem noch null und der Aufruf von ToString verursacht eine NullReferenceException. Ist das die Fehlermeldung, die du gemeint hast?

Du solltest also prüfen, ob SelectedItem null ist, bevor du es in einen String umwandeln lässt. :idea:

Grüße,
Yogu