Ich habe 2 Formulare ... wenn ich die Anwendung starte ... und benutze das Schließen "X" von der Titelleiste die ganze Anwendung schließt ... jetzt wenn ich eine Option aus dem 1. Formular auswähle ist es in meinem Fall eine Taste "HINZUFÜGEN" als eine Telefonbuchanwendung..es geht zum 2. Formular, da ich 1stform.hide () und 2ndform.show () benutzt habe ... jetzt wenn ich "X" von der Titelleiste mache, wird es nicht heruntergefahren komplett wie die 1stform nicht geschlossen ist .... wie man es so programmiert, dass in jedem Stadium die gesamte Anwendung geschlossen werden soll
Ihr erstes Formular ist als Startformular festgelegt. Das heißt, wenn sie geschlossen wird, ist Ihre gesamte Bewerbung geschlossen. Umgekehrt schließt Ihre Anwendung nicht, bis geschlossen wird. Wenn Sie also das Startformular ausblenden und das zweite Formular anzeigen, löst der Benutzer, der das zweite Formular schließt, das Schließen der Anwendung nicht aus, weil sie nur einen sekundären, nicht modalen Dialog geschlossen haben.
Ich empfehle, Ihr Design so zu ändern, dass das Startformular auch das Hauptformular Ihrer Anwendung ist. Es ist sinnlos, die eingebaute Funktionalität zu umgehen, die tatsächlich nützlich sein kann. Sie möchten, dass die Anwendung beendet wird, wenn das Hauptformular geschlossen wird, unabhängig davon, welche anderen untergeordneten Formulare geöffnet sind.
Aber die schnell und schmutzig Lösung in Ihrem Fall ist, einen Anruf an Application.Exit
. Dadurch werden alle der derzeit geöffneten Formulare geschlossen und Ihre Anwendung sofort beendet. Wie ich gerade sagte, empfehle ich diesen Ansatz nicht so sehr, da ich Application.Exit
von jedem Formular FormClosed
Event-Handler ist ein Zeichen dafür, dass in Ihrem Design etwas nicht stimmt.
Wenn das Paradigma der einzelnen Startup-Formulare für Sie nicht funktioniert, sollten Sie sich damit befassen, die Dinge in die eigenen Hände zu nehmen und die Methode Main
in Ihrer Program.cs
-Quelldatei anzupassen. Siehe die Antworten zu diese verwandte Frage für einige Ideen, wie das für Sie arbeiten könnte.
Sie können das FormClosing
-Ereignis des Formulars verwenden und folgenden Code hinzufügen:
Dies stoppt die gesamte Anwendung und schließt alle Fenster. Wenn jedoch ein Hintergrundthread ausgeführt wird, bleibt der Prozess selbst erhalten. In diesem Fall können Sie verwenden:
%Vor%Fügen Sie eine Application.Exit für das Closing-Ereignis jedes Formulars hinzu
so:
Erstellen Sie zuerst einen Abschluss-Event-Handler
%Vor%binden Sie dann dieses Ereignis an jedes von Ihnen erstellte Formular.
%Vor%Sie möchten sicher nicht die gesamte Anwendung herunterfahren, nachdem der Benutzer eine Telefonnummer hinzugefügt hat? Sie müssen nur sicherstellen, dass Ihr Hauptfenster wieder sichtbar wird. Schreibe das so:
%Vor%