Ich habe eine MDI-Anwendung in Winforms erstellt. Beim Start wird zunächst ein Anmeldebildschirm angezeigt, in den der Benutzer die E-Mail-Adresse und das Passwort seines Kontos eingibt. Dies wird online mit einem Web-Service validiert. Nach der Validierung verstecke ich dieses Login-Formular und starte ein Eltern-MDI-Formular. Von hier aus kann der Benutzer Kinder Formular starten und starten Sie das Programm. Einige vereinfachte Code ist unten.C# winforms Blockieren der Verwendung meines Programms, wenn Internet ausfällt
//pass along email and pass to web service
amazonaws.WebService1 MyService = new amazonaws.WebService1();
result = Remote.CheckUser(MyService, email, pass);
//process results
//if ok, launch parent
Main m = new Main();
m.Show();
//start timer which checks for internet every minute
timer1.Start();
//hide this form since closing it will exit altogether
this.Hide();
Das Programm wird jede Minute im Hintergrund geprüft wird, ob eine Internetverbindung verfügbar ist, und wenn es nicht den Fall, ich Pop die ursprüngliche Anmeldung Form bis zu dem Benutzer zu ermöglichen, wieder zu verbinden, wenn sie Internet haben.
Das funktioniert gut, aber ich habe ein Problem, dass, wenn das Login-Formular erscheint, da ich 'login.Show()' aufrufen, das Programm im Hintergrund immer noch verwendbar ist. Ich möchte die Nutzung des Programms blockieren, während das Anmeldeformular angezeigt wird.
Ich versuchte es als 'form.ShowDialog()' zu starten, aber nachdem ich ihre Informationen validiert und versteckt habe, schaltet sie meine gesamte Anwendung aus, da das Ausblenden eines modalen Fensters dieselbe Wirkung hat wie das Schließen und seitdem Ursprünglich in Application.Run (Login()) aufgerufen, wird es meine Anwendung geschlossen, wenn geschlossen/versteckt.
Alle Ideen sind willkommen.
Ihre Hauptform aus dem Application.Run starten. Öffnen Sie das Anmeldefenster in seinem Konstruktor oder in seinem Form_Load-Ereignis. – Steve
Leider ist das keine Option. Mein Code oben ist Pseudo-Code, es gibt eine Menge mehr nach der ersten Anmeldung, und das Hauptformular kann nicht gestartet werden, ohne sich bereits einzuloggen. Zumindest ohne größere Änderungen vorzunehmen. – nerdalert
Haben Sie darüber nachgedacht, alle Elemente auf dem Formular zu deaktivieren? Der Benutzer könnte das Formular zwar sehen, aber nichts bearbeiten? –