von MdiChild über MdiParent zum nächsten MdiChild
-
Hallo,
auch wenn die Überschrift vielleicht nicht wirklich vielsagend ist, möchte ich genau das machen.
D.h.: Ich habe ein MdiParent in dem ich je ein Objekt von meinen beiden MdiChilds angelegt habe. Nun soll, wenn bei dem ersten Child ein Button gedrückt wird, das 2te MdiChild gestartet werden und das erste verschwinden.
Ich denke es würde mir auch helfen, wenn man mir das anhand von normalen Formen erklären könnte (kein MdiParent).
Klingt eigentlich ganz einfach, leider weiß ich nicht wie man vom MdiParent aus, auf ein Ereignis beim MdiChild zugreifen kann.
Wäre toll wenn jemand einen Tipp hätte. Ich habe leider mit SuFu nichts finden können.
-
Du kannst doch objekte übergeben.
Dann übergibst du halt child1 an child2 oder wie auch immer,
und kannst es dann da nutzen.dann geht sowas
child2
//object anlegen Child1 Child1obj public void KontrolleVonChild1(Child1 Child1object) { Child1obj=Child1Object; } public void button_clicked(object sender, eventargs e) { Child1obj.Close() //oder hide was auch immer }
-
Erstmal vielen Dank für deine Hilfe. Leider habe ich ein Problem beim Übergeben.
public partial class Form1 : Form { Form3 F3 = new Form3(); Form2 F2 = new Form2(F3); //Funktioniert nicht, weil F3 noch unbekannt public Form1() { InitializeComponent(); F3.MdiParent = this; //Form1 wird zum Container für Objekt vonForm3. F2.MdiParent = this; //Form1 wird zum Container für Objekt vonForm2. F2.Show(); F3.Visible = false; } }
Also Form1 ist MdiParent, Form2 und 3 sind MdiChilds. Ich will von Form1 aus die Childs steuern können. Ich kann die Deklariation von F2 und F3 nicht in den Konstruktor von Form1 setzen, da ich dann in den Funktionen von Form1 nicht mehr auf F2 und F3 zugreifen kann.
Da ich noch ein Anfänger in der Programmierung bin, versuche ich meine Probleme möglichsts mit Büchern zu lösen, leider steht in keinem meiner Bücher etwas über mehr als 2 Formulare.
Ich hoffe ihr könnt helfen.
-
public partial class Form1 : Form { Form3 F3 = new Form3(); Form2 F2 = new Form2(F3); //nicht grad hier würde mir auch ne eigene methode schreiben public Form1() { InitializeComponent(); F3.MdiParent = this; //Form1 wird zum Container für Objekt vonForm3. F2.MdiParent = this; //Form1 wird zum Container für Objekt vonForm2. F2.Show(); F3.Visible = false; //wozu auf false setzen wenn es eh nicht sichtbar ist? Gibt ja Kein F3.Show(); } }
interessant wäre auch mal Form2 gewesen. ich hab das mal kurz
gemacht.Form1
public partial class Form1 : Form { Form3 F3 = new Form3(); Form2 F2 = new Form2(); public Form1() { InitializeComponent(); this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); } protected override void OnPaint(PaintEventArgs e) { F3.MdiParent = this; F2.MdiParent = this; F2.F3ObjektAnF2(F3); F2.Show(); base.OnPaint(e); } }
Form2
public partial class Form2 : Form { Form3 m_obj; public Form2() { InitializeComponent(); } public void F3ObjektAnF2(Form3 obj) { m_obj = obj; } private void F3Schließen_Click(object sender, EventArgs e) { m_obj.Close(); } private void F3Oeffnen_Click(object sender, EventArgs e) { m_obj.Show(); } }