C # Öffnen eines neuen Formulars und Schließen des anderen

8

In meinem Programm zeige ich ein Login-Formular vor dem Hauptformular, sobald das Programm eine erfolgreiche Anmeldung feststellt, verwende ich dies:

%Vor%

Das funktioniert gut, aber es gibt ein Problem, das Anmeldeformular ist immer noch geöffnet, obwohl es versteckt ist. Wenn das Programm geschlossen wird, bleibt der Prozess hängen. Wie kann ich das verhindern?

Sorry, habe vergessen hinzuzufügen, this.Close(); funktioniert nicht und schließt das Programm vollständig.

    
Dan 23.01.2012, 16:03
quelle

5 Antworten

8

Sie müssen Ihre MainForm angeben, wenn Sie die Anwendung anstarren, und im Ereignishandler Load dieses Formulars nach dem Login fragen. In diesem Fall haben Sie die Anwendung und Login für den Start ausgeführt:

Programm.cs

%Vor%

MainForm.cs

%Vor%

P.S. Close schließt Ihre Anwendung vollständig, wenn es die Hauptform Ihrer Anwendung ist.

    
Samich 23.01.2012, 16:08
quelle
10

Versuchen Sie etwas mehr wie folgt:

%Vor%

Sie möchten das Anmeldeformular ausblenden, bevor Sie das Dialogfeld anzeigen. Schließen Sie anschließend das Anmeldeformular, nachdem das Dialogfeld geschlossen wurde.

Wenn Sie einfach den Anmeldedialog schließen, wird die Anwendung letztendlich beendet. Das ist keine echte Lösung, aber Sie möchten die Anmeldung dennoch ausblenden.

Stellen Sie einfach die Dinge in die Reihenfolge, in die sie gehen sollen, besonders wenn es sich um Nachrichtenschleifen handelt.

Zuerst verstecken Sie das Login-Formular.
Als Nächstes zeigen Sie den Hauptformulardialog an, aber verhindern Sie, dass der Aufrufer von "ShowDialog ()" fortgesetzt wird, bis der Dialog geschlossen wird.
Zuletzt, wenn der Dialog geschlossen ist, schließen Sie das Anmeldeformular und beenden Sie die Anwendung.

    
David Morton 23.01.2012 16:07
quelle
1

Ändern Sie das Hauptformular in MainForm , und wenn die Anwendung gestartet wird, starten Sie in Ihrem MainForm_Load das Anmeldeformular als Dialogfeld, damit sie nicht auf das Hauptformular zugreifen können.

  • Wenn Sie die Anwendung über das Anmeldeformular schließen können, verwenden Sie Application.Exit(0);
  • Wenn Sie nicht möchten, dass die Hauptformularsuche angezeigt wird, überschreiben Sie SetVisibilityCore und rufen Sie innerhalb MainForm_Load .
  • auf
Brian Graham 23.01.2012 16:07
quelle
1

Sie können ApplicationContext.MainForm verwenden. , um das aktuelle Hauptformular für die Anwendung anzugeben:

%Vor%

dann in Login-Handler:

%Vor%     
PashaPash 22.05.2015 19:09
quelle
-1

Wie wäre es stattdessen mit this.Close() ?

    
Chris Shain 23.01.2012 16:05
quelle

Tags und Links