Dialog-Form - zugriff auf aufrufende Form - Parent/ParentForm ist null

11/02/2010 - 11:23 von M. Erlinger | Report spam
Hallo
wie kann ich denn bei einem DialogForm - Aufruf:
frmEdit.ShowDialog(this);
auf das aufrufende Fenster zurückgreifen ??
Ich dachte Parent oder ParentForm ist gesetzt - vor allem wenn ich
ShowDialog mit dem Parameter "this" aufrufe.

Kann mir dazu bitte jemand weiterhelfen.
Danke schon mal & schönen Gruß
Michael
 

Lesen sie die antworten

#1 Marcel Roma
11/02/2010 - 11:46 | Warnen spam
Am Thu, 11 Feb 2010 02:23:49 -0800 (PST) schrieb M. Erlinger:

Hallo
wie kann ich denn bei einem DialogForm - Aufruf:
frmEdit.ShowDialog(this);
auf das aufrufende Fenster zurückgreifen ??
Ich dachte Parent oder ParentForm ist gesetzt - vor allem wenn ich
ShowDialog mit dem Parameter "this" aufrufe.

Kann mir dazu bitte jemand weiterhelfen.
Danke schon mal & schönen Gruß
Michael



Hallo Michael,

Die zweite Form ist ein Steuerelemnt auf höchster Ebene, d.h. es kann kein
Parent haben.

Ich werde Dir aber eine Methode zeigen, die die Zusammenarbeit zwischen den
zwei Forms erleichtert, die beiden Klassen jedoch nicht aneinanderkettet.

Erstelle eine Interface, z.B. IMainForm mit den gewünschten Eigenschaften,
Methoden usw.:

public interface IHauptForm {
string HauptFormTitel {get; set;}
}

Lass nun deine Form diese Interface explizit implementieren

public partial class Form1 : Form, IHauptForm {
[...]

string IHauptForm.HauptFormTitel {
get { return this.Text; }
set { this.Text = value; }
}

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this); // Referenzübergabe im Konstruktor
f2.ShowDialog();
}
}

In der zweitern Form dann:

public partial class Form2 : Form {
IHauptForm m_HauptForm = null;

public Form2(IHauptForm form) {
m_HauptForm = form;
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e) {
MessageBox.Show(m_HauptForm.HauptFormTitel); // Zugriff auf Form1
}
}



Gruss
Marcel

Ähnliche fragen