ComboBox Reset
-
Hallo,
ich versuche seit 2 Tage herauszufinden, wie man eine ComboBox in den Ursprungszustand zurücksetzen kann.
Ich haben z.B. eine ComboBox comboAnrede mit Items 'Herr' und 'Frau'. Vor der Auswahl steht in der ComboBox "Anrede" (als Überschrift sozusagen), dies habe ich über die Texteigenschaft gesetzt.So sieht meine Methode zum Reset der Formularfelder aus:
private: System::Void clearAllControls(Control^ ctrl){ System::Windows::Forms::TextBox^ t; t = gcnew TextBox(); System::Windows::Forms::RadioButton^ r; r = gcnew RadioButton(); System::Windows::Forms::CheckBox^ chk; chk = gcnew CheckBox(); System::Windows::Forms::ComboBox^ cmbo; cmbo = gcnew ComboBox(); System::Windows::Forms::ListBox^ lst; lst = gcnew ListBox(); for each (Control^ c in ctrl->Controls){ if (c->GetType()==t->GetType()){ c->Text = ""; } else if (c->GetType()==r->GetType()){ static_cast<RadioButton^>(c)->Checked = false; } else if (c->GetType()==chk->GetType()){ static_cast<CheckBox^>(c)->Checked = false; } else if (c->GetType()==lst->GetType()){ static_cast<ListBox^ (c)->Items->Clear(); } else if (c->GetType()==cmbo->GetType()){ static_cast<ComboBox^>(c)->SelectedIndex = -1; //hier ist das "Überschrift-Feld" leer } else { clearAllControls(c); } } }
Bei allen Controls klappt das prima nur bei der ComboBox ist meine "Überschrift" gelöscht. Nun habe ich herausgefunden, dass der Text-Eigenschaft immer das angeklickte Item zugewiesen wird. Also Text wird immer überschrieben.
Gibt es eine einfache Möglichkeit die ComboBox in den Ursprungszustand (soll heißen, "Überschrift": Anrede, Items: Herr, Frau) zurückzusetzen?
Ist der ursprüngliche Textwert (Anrede) irgendwo noch gespeichert?
Mit Refresh, TextRefresh hat es auch nicht geklappt.
Da ich viele Comboboxen in meinem Formular habe, möchte ich nicht unbedingt für jede einzeln die ursprüngliche Texteigenschaft zwischenspeichern oder jede Combobox neu erstellen oder so.Mit den anderen Controls klappt das ja wunderbar, aber die ComboBox macht mir echt Kopfzerbrechen...
Vielen Dank schon mal.
Viele Grüße
Verena
-
Mir wird ja ganz schlecht, wenn ich den Code sehe...
Warum verwendest Du nicht
cb->Items->Clear(); so wie für die ListBox!?
-
Mit Clear werden die Items alle gelöscht, also Herr, Frau ist dann weg und es bleibt nur noch die Überschrift oder das zuletzt gewählte Item, was eben dann in der Text-Eigenschaft steht.
Bin noch am üben. Wie würde der Code denn "schön" aussehen?
-
1. Solltest Du mal einen Kurs besuchen
2. Solltest Du kein C++/CLI machen, sondern C#
3. Könntest Du einen Berater einstellenSiehe auch:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/