2009-08-18 17 views
2

Ich bin mir sicher, dass ich meinen Login-Prozess für meine App in einer nicht so perfekten Art und Weise, aber wie mit vielen Dingen, funktioniert es. Das Problem ist, dass es funktioniert. Ich muss die sehr unpopuläre DoEvents-Sache verwenden.Zeige Login-Formular vor Hauptformular in vb.net

Ich möchte, dass meine Anwendung einen Anmeldebildschirm anzeigt, bevor mein Hauptformular geladen wird. Zur Zeit habe ich ein Anmeldedialogfeld mit einer booleschen FormOpen-Eigenschaft und einer authentifizierten booleschen Eigenschaft. Wenn sich ein Benutzer erfolgreich anmeldet, verberge ich das Anmeldeformular, setze formopen auf false und authentifiziere es auf true. Wenn sie abbrechen, dann mache ich das gleiche und setze die authentifizierte Eigenschaft auf false. Wenn authentifiziere = false dann beende ich die App, sonst zeige ich das Hauptformular über application.run (Mainform)

Shared Sub Main() 

Using frmLogin1 As New LoginForm 
    frmLogin1.Show() 
    Do While frmLogin1.FormOpen = True 
     Application.DoEvents() 
    Loop 

    If frmLogin1.Authenticated = False Then End 
End Using 

ModuleRegistration.Register() 
Application.Run(MainForm) 

End Sub 

Gibt es einen bevorzugten Weg, dies zu tun?

Antwort

1

Sie könnten einfach das Startformular auf das Anmeldeformular setzen. Wenn der Benutzer dann "OK" drückt und verifiziert ist, laden Sie einfach das Hauptformular und schließen das Anmeldeformular.

Alternativ können Sie die Methode "ShowDialog" verwenden, um das Formular modal anzuzeigen. In Ihrem Anmeldeformular-Code können Sie DialogResult beim Schließen des Formulars festlegen, das der Rückgabewert der ShowDialog-Methode wird. Auf diese Weise können Sie erkennen, dass zum Beispiel "Abbrechen" gedrückt wurde und beendet wurde.

UPDATE: Vielleicht, wenn Sie Ihren Sub Main ändern nur:

Application.Run(YourLoginForm) 

Zusammen mit dem, was anderem Startcode Sie erfordern. Dann handhaben Sie, das Hauptformular in Ihrem Anmeldeformular zu zeigen (wenn ich mich richtig erinnere, wird Ihre Anwendung nicht beendet, bis das letzte Formular schließt ... Sie können das zu Ihrem Vorteil verwenden).

+0

Danke für die prompte Antwort. Ich hatte jedoch ein Problem mit showdialog. IIRC, das Problem dabei war, dass ich eine Schaltfläche in meinem Login-Formular habe, mit der ich die Datenbankkonfiguration für meine App, die ich mit showdialog geöffnet habe, hinzufüge/ändere. Wenn das dbconfig-Formular ein dialogresult-Objekt gesendet hat, hat es dazu geführt, dass das Sub-Hauptprogramm die Verarbeitung fortgesetzt hat. Selbst wenn das übergeordnete Element von dbconfig angemeldet war. – Dennis

+0

Meine Antwort wurde aktualisiert, um auf Ihren Kommentar zu antworten. –

1

Ich denke, Ihr Ansatz ist in Ordnung, bis auf eine Sache: die Schleife. Zeigen Sie stattdessen das Anmeldeformular unter Verwendung von ShowDialog an.

0

Oder anstatt auf das Schließen Ihres Anmeldeformulars zu warten, melden Sie sich im Anmeldeformular an. Sie müssen Ihr Login-Formular mit Ereignissen angeben. Wenn das neue Ereignis des Anmeldeformulars ausgelöst wird, überprüfen Sie den Wert der authentifizierten Eigenschaft.

Verwandte Themen