Entwickler-Ecke

Basistechnologien - Eventhandler für jedes Objekt in Objektarray erstellen


HCN - So 08.06.08 20:57
Titel: Eventhandler für jedes Objekt in Objektarray erstellen
Hallo,

in meinem Programm erzeuge ich beim starten des Forms mit einer Schleife X Objekte meines Typs RichTextBoxEx, füge diese einem RichTextBoxEx[] Array Names schachteln hinzu und lasse die später dann alle nach einem bestimmten Schema auf meinem Form anordnen.

Wenn ich dann z. B. allen eine bestimmte Eigenschaft verpassen möchte, nehme ich wieder eine Schleife und mache:


C#-Quelltext
1:
this.schachteln[i].Text = "Bla Bla Bla";                    


Schon hat jedes Objekt diese Eigenschaft.

Jetzt möchte ich jedem Objekt einen Eventhandler hinzufügen und dachte mir ich mache einfach:


C#-Quelltext
1:
2:
 this.schachteln[i].MouseEnter += new EventHandler(this.schachteln_MouseEnter);
     this.schachteln[i].MouseLeave += new EventHandler(this.schachteln_MouseLeave);


(bis hier funktinierts)
und weiter in der Klasse dann eben:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
    private void schachteln_MouseEnter(object sender, EventArgs e)
        {
            this.schachteln[i].ForeColor = Color.Orange;
        }

        private void schachteln_MouseLeave(object sender, EventArgs e)
        {
            this.schachteln[i].ForeColor = Color.Black;
        }


(das geht leider nicht)

Das Ziel sollte sein das sich die Textfarbe beim Betreten / Verlassen NUR VON DEM OBJEKT ändert das den event ausgelöt hat. So geht es aber leider nicht. Ich kann ja schlecht für jedes Objekt eine eigene Methode schreiben, das es ja immer unterschiedlich viele Objekte sind ???

Wie teile ich der Methode denn mit von welcher schachtel[i] er die ForeColor ändern soll ????

Danke und Gruß HCN


Christian S. - So 08.06.08 21:02

Hallo!

Der sender-Parameter enthält das Objekt, welches das Event ausgelöst hat. In Deinem Fall als die entsprechende RichTextBoxEx. Durch entsprechendes casten solltest Du auf alle Eigenschaften zugreifen können.

Grüße
Christian


HCN - So 08.06.08 21:39

Aha danke ok, und wie mache ich das nun mit dem konvertieren ? Ich stehe ein wenig auf dem Schlauch....


Christian S. - So 08.06.08 21:43

Für Grundlagen empfehle ich das OpenBook Visual C#, hier [http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_03_002.htm#Xxx1000415] direkt mal der Abschnitt zu explizier Konvertierung. In diesem Fall:


C#-Quelltext
1:
RichTextBoxEx rtbEx = (RichTextBoxEx)sender;                    


HCN - So 08.06.08 21:53

Achso, so einfach ? Danke Dir!!!!!

Dachte das mit dem Typ in Klammern davor schreiben umzu casten geht nur für so Standard Typen wie int, double usw....
Dann hab ich ja wieder was gelernt.