Laden...

Event an MDI-Child

Erstellt von ayrtonsenna vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.647 Views
ayrtonsenna Themenstarter:in
27 Beiträge seit 2006
vor 17 Jahren
Event an MDI-Child

Tach Leute,
ich hab da ein Problem mit einem Event, das ich gern an MDI-Childs geben möchte.
Folgende Ausgangssituation:
Ich habe ein MDI-Parent, indem auch noch ein Button sitzt. Wenn ich den Button drücke soll mein Event an alle MDI-Childs gehen.
Wie mache ich denn das?
Im Mdi-Parent habe ich folgendes definiert


public delegate void TestEventHandler(object sender, EventArgs e);
public event TestEventHandler TestButtonClicked;

Für den Button selbst, der dann das Event auslöst:


private void btnTest_Click(object sender, EventArgs e)
{
   if(TestButtonClicked != null)
   {
      TestButtonClicked(this, e);
   }
}

Aber was muss ich tun, damit die MDI-Childs das Event ausnehmen können?
Wie muss der Handler dafür aussehen?

Danke für eure Hilfe

F
722 Beiträge seit 2005
vor 17 Jahren

Hallo,

deine child fenster müssen sich für das event anmelden.
Dazu muss du sicherstellen, dass sie auch zugriff auf das parent fenster bekommen. (also einen STRONG pointer, nicht nur basisklassenzugriff auf Form). innerhalb des child-fensters schreibst du dann ungefähr folgendes


Parent.TestButtonClicked += new TestEventHandler(ParentButton_Click);

an deiner stelle würde ich hier mit interfaces arbeiten. alle childs sollten ein interface implementieren, was dann vom Hauptfenster aufgerufen wird. damit wird es sehr einfach, hinterher neue funktionen einzubauen.

ayrtonsenna Themenstarter:in
27 Beiträge seit 2006
vor 17 Jahren

Danke für die Hilfe,
das

Parent.TestButtonClicked += new TestEventHandler(TestButton_Click);

hatte ich bei den Childs auch schon drin, aber es kam immer zu Fehlern.

Mit Interfaces habe ich noch nicht gearbeitet, muss ich mich wohl erstmal reinvertiefen.
@feadur
Könntest du deine Gedankengänge dazu noch etwas ausführlicher beschreiben?
Danke

ayrtonsenna Themenstarter:in
27 Beiträge seit 2006
vor 17 Jahren
Komplett verwirrt...

Hallo ihr Schlauen in aller Welt,
nun bin ich komplett verwirrt und sehe den Wald vor lauter Bäumen nicht mehr X(

Ich wollte mir den Tip von feadur zu Herzen nehmen und ein Interface definieren. Nur Leider bin ich bs jetzt kläglich gescheitert.
Was muss denn nun wo stehen.
Ich finde im MDI-Parent müsste

public event TestEventHandler TestButtonClicked;

Aber was soll dann im Interface stehen? Die Definition für den Handler?
Und wo muss ich das Child-Fenster dann für das Event anmelden?
Wäre für ein paar entwirrende Tipps dankbar...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo ayrtonsenna,

das ist einfach kein Fall für einen Event. Definiere in den MdiChilds eine Methode und rufe diese aus dem Parent auf. Dafür kannst du dann auch ein Interface verwenden.

herbivore