2012-03-26 28 views
0

Ich habe ein Anmeldeformular in meiner App. Sobald ein korrekter Benutzername und ein passwort vorhanden sind, möchte ich das Anmeldeformular schließen und mein Hauptformular öffnen. Ich hatte Probleme, dies zu tun, also habe ich eine schnelle Lösung verwendet und sie so codiert, dass eine erfolgreiche Anmeldung dazu führte, dass die Visible-Eigenschaft des Anmeldeformulars auf "false" gesetzt wurde (so dass es so aussah, als wäre es für den Benutzer geschlossen). Aber ich bin nicht glücklich mit dieser Lösung, weil es bedeutet, dass die Login-Form immer offen ist.Zwischen den Formularen wechseln

Der Code, den ich auf meinem frmLogIn haben, ist

Form fM = new frmMain(); 
this.Visible = false; 
fM.Show(); 

Wie kann ich das ändern, so dass frmLogIn schließt tatsächlich als frmMain öffnet?

PS. Ich habe diesen Code auch aus einem anderen Thread in diesen Foren ausprobiert, aber das funktioniert auch nicht.

Form fM = new frmMain(); 
fM.Location = this.Location; 
fM.StartPosition = FormStartPosition.Manual; 
fM.FormClosing += delegate { this.Show(); }; 
fM.Show(); 
this.Hide(); 
+1

suchen Sie die Funktion 'Close()'? Das wird deine Form schließen. (Das würde auch das FormClosing-Ereignis für das schließende Formular aufrufen, in dem Sie Ihr anderes Formular anzeigen können) – Default

+1

Haben Sie das versucht.Close()? – daryal

Antwort

1

So sagen Sie in den wichtigsten Anwendungen sind bildet Load-Ereignis. Hier können Sie starten Sie Ihre Login-Bildschirm

LoginForm logForm = new LoginForm(); 
logForm.ShowDialog(); 

dann könnten Sie bekommen, ob die Anmeldung von relevanten logForm passed 's Accessor, so in der logForm' s Abschlussveranstaltung

this.passedLogin = true; 
this.Close(); 

dann wieder im Haupt Formen Load-Ereignis nach den ShowDialog() oben, können Sie überprüfen, ob die Login bestanden, wenn es nicht die Anwendung geschlossen hat oder zwingen, einen erneuten Versuch

if (!logForm.passedLogin) 
    this.Close(); 

Ich hoffe das hilft.

+2

nettes Duplikat;) – Carsten

+0

Ich hatte die anderen Antworten nicht gelesen und ich verstehe was du meinst. Entschuldigung. Aber ich versichere Ihnen, das ist der Fall von großartigen Köpfen, die gleich denken. – MoonKnight

+1

np ... deshalb lege ich den Smiley da rein – Carsten

3

Ich würde empfehlen, es zu tun tun, um die andere Art und Weise: In Ihrem MainForms - Loaded-Ereignis anzeigen (modal), um den Login-Dialog und wenn der Benutzer nicht anmelden hat darauf reagieren.

Zum Beispiel:

void FormLoad(...) 
{ 
    var dlg = new LoginDialog(); 
    dlg.ShowDialog(); 

    if (!dlg.UserLogedIn) 
    { 
     // react .... 
     this.Close(); 
    } 
} 
Verwandte Themen