2010-06-25 27 views
5

Ich habe eine kleine Anwendung, die Warnungen erstellt, wenn eine Änderung an einer Datenbank vorgenommen wird. Ich habe ein paar Optionen in der Warnmeldung, die erscheint.
Eine der Optionen öffnet ein anderes Formular (ein untergeordnetes Formular), das den Benutzer nach weiteren Informationen fragt.Ein Formular von einem anderen Formular schließen?

Wenn das untergeordnete Formular die erforderlichen Informationen vom Benutzer erhält, möchte ich, dass es so gut wie das übergeordnete Formular schließt. Bis jetzt weiß ich nur, wie man die Kindform schließt, aber nicht die Elternform.

Parent form > Opens child form 
Child gathers information > User clicks ok in child > child closes, parent closes 

^das ist, was ich will

Ich habe einfach nicht das Gehirn Macht darüber nachzudenken, wie über Formulare zu kommunizieren Schließen der Mutterform zu erreichen.

Jede Hilfe würde sehr geschätzt werden. Eigentlich wäre es super geschätzt. Wenn ich lernen könnte, wie man meine Formen miteinander kommunizieren lässt, könnte ich wirklich viel Schaden anrichten (auf eine gute Weise 8D).

ChildForm f = new ChildForm(); 
f.FormClosed += (o,e) => this.Close(); 
f.Show(); 

Antwort

1

die Sie interessieren in der Mutterform:

+0

Wenn das untergeordnete Formular viele Informationen an das übergeordnete Formular zurücksenden soll, möchte ich lieber, dass die Klasse des untergeordneten Formulars eine statische Methode definiert, die ein untergeordnetes Formular erstellt, ShowDialog ausführt und die entsprechenden Informationen daraus in Rückgabedaten kopiert Objekt, zerstört das Formular und gibt die Daten zurück. In einem solchen Szenario kann der Konstruktor des untergeordneten Formulars geschützt werden oder, falls die Klasse nicht vererbbar ist, privat. – supercat

+0

Ich übergebe entweder ein Geschäftsobjekt in das untergeordnete Formular und lasse Änderungen am Objekt vornehmen oder, in der Regel, die Daten als Eigenschaft für das untergeordnete Formular verfügbar machen. –

6

In der Stammform, Sie so etwas tun kann

using (var childForm = new ChildForm()) 
{ 
    if (childForm.ShowDialog() == DialogResult.OK) 
    { 
     Close(); 
    } 
} 

Ihr Kind Form zurückkehren sollte ein Dialogresult durch Tasten klicken (OK oder Abbrechen) und/oder Festlegen der Eigenschaften AcceptButton und CancelButton im Designer.

+0

@Justin, ich bekomme einen Delegierten() kann nicht 0 Parameter Fehler ... – sooprise

+0

@BFree, Ihre Lösung funktioniert perfekt, vielen Dank !!! : D – sooprise

+1

Dadurch kann der Benutzer nicht abbrechen, was im untergeordneten Formular ausgeführt wird. –

Verwandte Themen