2016-04-06 6 views
-3

Ich versuche, ein Login für mein Tool zu erstellen und habe das sortiert, aber wenn sie auf Login (Child Formular) drücken, führt das Programm eine Schleife aus und fordert den Benutzer auf, sich erneut anzumelden. Ich merke, wenn ich den 'Exit'-Knopf drücke, dann lädt das Elternformular, aber ich will das nicht. Ich möchte, dass meine Benutzer sich anmelden und dann direkt zum Elternformular wechseln. das Kind Form zu öffnen, bevor das übergeordnete Formular innerhalb von Form1_Load Ich habe diese:Übergeordnetes Formular und untergeordnetes Formular in Schleife C#

 Login Log = new Login(); 
     Log.ShowDialog(); 

Innerhalb der Schaltfläche ‚Login‘ auf dem Kind Form Ich habe dies:

 this.Hide(); 
     Form1 Main = new Form1(); 
     Main.Show(); 
+0

Bitte zeigen Sie den Rest Ihrer Form Load Event-Handler. Es sieht so aus, als ob Sie Ihr ursprüngliches Form1 verbergen, indem Sie ein neues erstellen und es stattdessen anzeigen. Sie sollten wahrscheinlich Ihr Login-Formular als Hauptformular haben und es ausblenden und zeigen Form1 nur, wenn die Anmeldung erfolgreich ist. –

Antwort

0

Der beste Weg zu handhaben Dies würde bedeuten, die Anmeldung VOR dem Start Ihres Formulars (zB in der Programm.cs, aber nach der Initialisierung der Anwendung) zu behandeln. Fügen Sie eine Variable in Ihr Login-Formular ein (z. B. ein Bool, das anzeigt, ob sie Ihren Autorisierungstest bestanden hat) und prüfen Sie, nachdem das Formular geschlossen wurde, um zu sehen, welcher Status der Autorisierung vorliegt. Wenn das Flag auf false festgelegt ist, können Sie eine Rückgabe oder Application.Exit() ausführen und der Benutzer wird das Hauptformular nie sehen.

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     SomeLoginForm Login = new SomeLoginForm(); 
     Login.ShowDialog(); 
     if (!Login.HasPassedAuthorization) 
     { 
      MessageBox.Show("Sorry you failed to pass the test! I'm kicking you out now!"); 
      Application.Exit(); // or do a "return;" 
     } 

     Application.Run(new Form1()); 
    } 
} 


static class SomeLoginForm() 
{ 
     internal bool HasPassedAuthorization; 

} 
+0

Entschuldigung, wenn ich die Frage auch falsch verstanden habe. Ich bin mir nicht sicher, ob Sie den Anmeldedialog am besten anzeigen möchten, ohne zuerst das Hauptformular anzuzeigen oder wenn Sie das Hauptformular anzeigen möchten, während Sie den Anmeldedialog anzeigen. Lass es mich wissen und ich werde meine Antwort so gut wie möglich aktualisieren. –

Verwandte Themen