B
Thx Mr. Evil..!
Hätte jetzt mittlerweile beim Testen verschiedener Sachen mal ne andere Frage, die auch mit der ComboBox zu tun hat. Und zwar:
Wenn man eine ComboBox Adden will, geht es doch ganz einfach mit
Controls.Add(ComboBox);
Aber wenn man die dann mal entfernen will, geht das nicht so einfach, also mit:
Controls.Remove(ComboBox);
In MSDN (http://msdn.microsoft.com/de-de/library/aa984275(VS.71).aspx)
steht, dass man den Ereignishandler vom Ereignis entfernen soll mit -=, dann den Remove-Befehl und dann ein Dispose-Befehl. Auf der Seite gibt es auch ein Beispiel mit einem Button. Meine Frage wäre jetzt, wieso man den Ereinishandler vom Ereignis entfernen soll, also wieso dieser Befehl mit dem -= ..?
Ich meine wenn ich das Steuerelement enferne, funktioneirt dann sowieso kein Ereigniss mehr, wieso dann solch Aufwand..?
Und habe versucht das Beispiel von dieser Seite in einem Beispiel mit ner ComboBox auszuprobieren und bei mir klappt es nicht, hier der Code..:
(Habe ComboBox1 grafisch erstellt mit 2 Items("1"und"2"), wenn man 1 wählt passiert was, wird bei obox_SelectedIndexChanged behnadelt und ist grad unwichtig, wenn man aber 2 wählt, dann soll die erste ComboBox, die ich grafisch erstellt habe von der Form entfernt werden..!)
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox obox = new ComboBox();
if (comboBox1.SelectedItem.Equals("1"))
{
obox.Location = new Point(42, 87);
Controls.Add(obox);
obox.Items.Add("a");
obox.Items.Add("b");
obox.Items.Add("c");
obox.SelectedIndexChanged += new EventHandler(obox_SelectedIndexChanged);
}
if (comboBox1.SelectedItem.Equals("2"))
{
if (Controls.Contains(obox))//Hier is irgendwo der fehler
{ // ------
obox.SelectedIndexChanged -= new System.EventHandler(obox_SelectedIndexChanged);
Controls.Remove(obox);
obox.Dispose();
} // ------
}
}
Wo ist mein Fehler..?