Ich muss ein übergeordnetes Formular innerhalb des untergeordneten Formulars von einer Windows-Anwendung schließen. Was wäre der beste Weg, dies zu tun?Wie schließe ich ein übergeordnetes Formular aus untergeordnetem Formular in Windows Forms 2.0?
Antwort
Wenn Sie das Formular in WinForms schließen, werden alle untergeordneten Objekte entfernt. Es ist also keine gute Idee. Sie müssen es asynchron tun, z. B. können Sie eine Nachricht an das übergeordnete Formular senden.
Die Form-Klasse bietet keinen Verweis auf das "Eltern" -Formular, daher gibt es keine direkte Möglichkeit, auf den Eltern zuzugreifen (es sei denn, es handelt sich auch um das MDI-Elternteil, in welchem Fall Sie darauf zugreifen könnten) durch die MDIParent-Eigenschaft). Sie müssten im Konstruktor des untergeordneten Elements oder einer Eigenschaft einen Verweis auf das übergeordnete Element übergeben und dann daran denken, es festzulegen, und dann diesen Verweis verwenden, um das Schließen des übergeordneten Elements zu erzwingen.
Vielleicht erwägen Sie, dass das übergeordnete Element ein Ereignis für das untergeordnete Element abonniert, und das untergeordnete Element kann dieses Ereignis auslösen, wenn es das übergeordnete Element schließen möchte. Der Elternteil kann dann sein eigenes Schließen (zusammen mit dem des Kindes) handhaben.
Sie verwenden eindeutig die richtige Methode zum Öffnen und Schließen von Formularen. Wenn Sie irgendeine Form von MVC oder MVP verwenden, würde dieses Problem nicht auftreten.
Verwenden Sie daher eine Form von MVP oder MVC, um dieses Problem zu lösen.
Ich stimme mit davidg; Sie können einen Verweis auf das übergeordnete Formular des Kindes Form Konstruktor hinzufügen und dann das übergeordnete Formular schließen, wie Sie benötigen:
private Form pForm;
public ChildForm(ref Form parentForm)
{
pForm = parentForm;
}
private closeParent()
{
if (this.pForm != null)
this.pForm.Close();
this.pForm = null;
}
Ich habe das gleiche Problem und diese Lösung funktioniert nicht in meinem Fall. Auch in zweiter Form fange ich einen Thread an, verursacht das Problem. – Posto
ich auf diesem Blog-Eintrag lief, der wie es funktioniert aussieht und es nutzt die Event-Handler Konzept von D2VIANT Antwort
http://www.dotnetcurry.com/ShowArticle.aspx?ID=125
Zusammenfassung: Schritt 1: erstellen Sie eine neue Windows-Anwendung. Öffnen Sie Visual Studio 2005 oder 2008. Gehen Sie zu Datei> Neu> Projekt> Wählen Sie Visual Basic oder Visual C# in der Windows-Anwendung 'Projekttypen'. Geben Sie dem Projekt einen Namen und einen Speicherort> OK.
Schritt 2: Fügen Sie ein n ew Formular zum Projekt hinzu. Klicken Sie mit der rechten Maustaste auf das Projekt> Hinzufügen> Windows Forms> Form2.cs> Hinzufügen.
Schritt 3: Ziehen Sie in Form1 eine Schaltfläche 'btnOpenForm' und doppelklicken Sie darauf, um einen Ereignishandler zu generieren. Schreibe den folgenden Code hinein. Fügen Sie auch den Ereignishandler frm2_FormClosed wie folgt hinzu:
private void btnOpenForm_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
frm2.Show();
this.Hide();
}
private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
Es gibt eine sehr einfache Lösung dafür.
Problem (Um sicher zu sein): Startet App (Hauptformular)> Untergeordnetes Formular des Hauptformulars VIA-Schaltfläche oder jedes Ereignis> Schließt (Hauptformular) Aber Kindformular auch schließt.
Lösung:
Verwendung:
Process.Start("Your_App's_EXE_Full_Path.exe");
Beispiel: Versuchen Sie, diese vollständigen Pfad zu erhalten:
string FullPath = Environment.CurrentDirectory + "\\YourAppName.exe";
Process.Start(FullPath);
.
this.Close();
- diese Weise können Sie alle bilden Sie offen halten wollen, halten erhalten werde.
- 1. Windows Forms, erhalten eine Eigenschaft von übergeordnetes Formular
- 2. Wie mache ich ein Formular in Windows Forms modal?
- 3. Aktualisieren Sie Datagridview in übergeordnetem Formular von untergeordnetem Formular?
- 4. System :: Windows :: Forms :: Formular :: Showdialog()
- 5. Bash - Übergeordnetes Skript aus untergeordnetem Skript
- 6. WPF-Formular in einem Windows Forms-Projekt
- 7. Wie erhalte ich MicrosoftReportViewer in meinem Windows Forms Formular?
- 8. Wie schließe ich ein Formular mit get-Methode in jquery
- 9. Übergeordnetes Formular und untergeordnetes Formular in Schleife C#
- 10. Übergeordnetes Formular für Komponente erhalten
- 11. Wie schließe ich ein modales Formular gleich nach dem Öffnen?
- 12. .NET: Wie ein Windows-Formular in ein Windows-Steuerelement konvertieren
- 13. Kann ich ein Windows-Formular von einem Konsolenprogramm aus starten
- 14. C# Disable Listbox von übergeordnetes Formular
- 15. Windows Forms .NET 2.0: Wie zeichne ein PNG-Symbol?
- 16. Windows Forms Sichtbarkeitsproblem
- 17. Windows-Formular App: Wie formuliere ich Bestellungen?
- 18. Wie schicke ich ein Formular in Elm?
- 19. Zoom für ein Windows-Formular in C#
- 20. Schleife durch Menüelemente in MDI übergeordnetes Formular in WinForms
- 21. Wie schicke ich ein Formular in Laravel?
- 22. Windows-Formular von Konsole
- 23. Wie ein Formular einreichen
- 24. Wie reiche ich ein Formular in einem WebBrowser-Steuerelement ein?
- 25. Machen Sie ein vorhandenes Windows-Formular vererbbar
- 26. Wie verschiebe ich ein Windows-Menü in MDI Windows Forms?
- 27. windows forms
- 28. Wie erstelle ich ein Formular aus einem JSON-Schema?
- 29. Wie lese ich Eingabedaten in einem Formular?
- 30. Wie schließe ich eine Registerkarte, wenn ein eingebettetes Formular geschlossen wurde?
nicht sicher, was du mit "Kind Form" bedeuten. Vielleicht ist es ein Knopf auf einer Tafel auf einem Formular? Oder ist es eine MDI-Sache? Oder bildet das Kind ein Dialogfeld? –