2017-02-12 2 views
2

Ich bin Anfänger in C# und ich habe versucht, WFA-Anwendung zu machen. Aber es gibt ein Problem. Wenn ich es starte, zeigt es das erste (Login) -Formular an und wenn ich es schließe, ohne mich einzuloggen, funktioniert es gut, aber wenn ich mich anmelde, wird das erste Formular ausgeblendet, das zweite Formular erscheint und wenn ich es schließe, indem ich X-Taste drücke ist verschwunden, aber ich kann sehen, dass der Prozess im Task-Manager läuft. Auf secound Formular ist auch Abmelde-Taste, und wenn ich auf die Schaltfläche klicken, versteckt es secound Form und zeigt erste (Login) -Form, und wenn ich es schließe, noch im Hintergrund laufen. Wie kann ich den Prozess im Hintergrund stoppen, wenn ich die App mit der X-Taste drücke? Ich suchte, aber ich konnte keine Lösung für mein Problem finden. (I gefunden, etwas zu befestigen Fäden zu verarbeiten und sehen, aber es gibt zu viele von ihnen)Prozess weiter nach dem Schließen der Anwendung C#

Es Code ist, wo Formulare erstellt werden, ausgeblendete etc:

Wenn in frmLogin angemeldet versteckt -> frmMail
zeigen Wenn abgemeldet frmMail versteckt -> zeige frmLogin.

Wenn der Benutzer erfolgreich angemeldet:

this.Hide(); 
frmMail f2 = new frmMail(); 
f2.Show(); 

Wenn Benutzer klicken Sie auf "Abmelden" Button:

this.Hide(); 
frmLogin f1 = new frmLogin(); 
f1.Show(); 

I-Lösung gefunden, wenn alle gleiche Problem haben dies helfen können. How to switch between forms without creating new instance of forms?

How do I prevent the app from terminating when I close the startup form?

+1

Der Prozess läuft noch, weil das Startformular noch nicht geschlossen ist. Es ist versteckt, und der Benutzer kann nichts damit machen. Sie scheinen auch ein neues Anmeldeformular zu erstellen, anstatt das vorhandene zu verwenden. Nun, das ist nicht der richtige Weg. Es gibt viele mögliche Korrekturen, aber bedenke [die Art, wie deine App beendet wird] (http://stackoverflow.com/a/10769349/17034), damit du nichts verstecken musst und einfach ein Fenster schließen kannst, das du nicht brauchst . –

+0

@HansPassant Jetzt weiß ich. Ich habe diesen Code (von chaning the way ..) in Program.cs eingefügt, aber ich bin mir nicht sicher, was ich in frmLogin.cs und frmMail.cs tun muss, damit das funktioniert. – belmo

+0

Rufen Sie nicht Hide() auf, rufen Sie Close() auf. Nach dem Anzeigen der neuen Form. Jetzt ist es einfach. –

Antwort

0

Was in Ihrem Fall zu tun ist ziemlich einfach ich. Faust I außer Kraft setzen, das FormClose_Event, so etwas wie diese

void Form_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //And here you can call 
    Application.Exit(); 
    // which this will cause to close everything in your application 
    //Also if you want to be more aggressive, there is another option, you can 
    //use, Environment.Exit(1), which will basically kill you process. 
} 

Ich hoffe, meine Antwort hilft Ihnen, habe einen schönen Tag!

+0

Danke, das ist es. Ich habe Code ähnlich verwendet und es funktioniert! – belmo

Verwandte Themen