2010-08-17 6 views
7

Ich habe Probleme, mein Hauptformular für ein Login-Formular zu verbergen. Sobald der Benutzer sich angemeldet hat, um das Anmeldeformular zu schließen und das Hauptformular anzuzeigen.C# Login-Beispiele

Ich habe mich selbst so verwirrt, dass ich den ganzen Code gelöscht habe und frisch angefangen habe. Ich kann das Anmeldeformular ausblenden.

Ich konnte nicht das Hauptformular mit

Application.Run(new MainForm()); 

Login-Formular sieht wie folgt genannt verstecken: vergangen

namespace WindowsFormsApplication1 
{ 
    public partial class LoginForm : Form 
    { 
     public LoginForm() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string username; 
      string password; 

      username = TB_username.Text; 
      password = TB_password.Text; 

      if (User.Login(username, password)) 
      { 
       Globals._Login = true; 

       // Close login form 
       this.Dispose(false); 

      } 
      else 
      { 
       MessageBox.Show("Login Failed"); 
      } 

     } 
    } 
} 

ich kann nicht herausfinden, wie zu verbergen dann zeigt die Hauptform einmal Login .

Dank keine Beispiele würden

+0

Was passiert, wenn Sie "Hide()" in der Mainform nennen? – Blam

+0

Unrelated, aber überlegen Sie, 'SecureString' anstelle von' String' für den Passwort-Teil des Logins zu verwenden. – JaredPar

Antwort

20
  1. Verwenden ShowDialog() das Login-Formular zu öffnen. Dann müssen Sie das Mainform nicht selbst verstecken oder deaktivieren. wenn Sie das Login-Formular erscheinen am Anfang der Anwendung wollen, sollten Sie es in der Tat zeigt, bevor auch die Mainform Laden:

    static void Main() 
    { 
        Application.SetCompatibleTextRenderingDefault(false); 
        Application.EnableVisualStyles(); 
        DialogResult result; 
        using (var loginForm = new LoginForm()) 
         result = loginForm.ShowDialog(); 
        if (result == DialogResult.OK) 
        { 
         // login was successful 
         Application.Run(new Mainform()); 
        } 
    } 
    
  2. In Ihrem Login-Formular, in button1_Click verwenden

    DialogResult = DialogResult.OK; 
    

    , um das Anmeldeformular zu schließen und das Ergebnis OK an das Mainform weiterzuleiten. Es ist kein Dispose() erforderlich.

+0

Danke hat ein Vergnügen gemacht. – Joe

+0

Kann jemand bitte erklären, wie ich die Benutzerdetails zum Mainform erhalten werde. – Sribin

0

Verwenden Sie die Showdialog() Funktion auf dem Anmeldeformular groß sein, das Anmeldeformular aus dem Hauptformular der Anwendung zu laden. Dies verhindert, dass MainForm angezeigt wird, bis das LoginForm beendet ist.

private void MainForm_Load(object sender, EventArgs e) { 
    var loginForm = new LoginForm(); 
    loginForm.ShowDialog(); 
} 
1

Also ... Hier ist mein Login :) Sie können es mögen oder nicht mögen, aber so ... Das ist meine Lösung.

private void FRIIB_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      QueryBuilder.insql = Crypto.DecryptStringAES(Model.DecryptRegisteryValue("inSQL"), "inSQL"); 
     } 
     catch (Exception exc) 
     { 
      MessageBox.Show(exc.Message); 
     } // getting connection string 
     if (!(new Func<bool>(() => 
       { 
        Func<bool> l = null; l =() => 
        { 
         using (LoginForm loginDialog = new LoginForm()) 
         { 
          loginDialog.ShowDialog(); 
          loginDialog.Focus(); 
          if (loginDialog.IsExit) return false; 
          else 
           if (loginDialog.IsAuthorized) return true; 
           else return l(); 
         } 
        }; return l(); 
       } 
      )() 
      )) Close(); 
     else w8(() => LoadData()); 
    } 

und hier ist eine Beschreibung für Code:

private void w8(Action action) 
    { 
     Cursor.Current = Cursors.WaitCursor; 
     Application.DoEvents(); 
     action(); 
     Cursor.Current = Cursors.Default; 
    } 

Public Class DamnLogin 
    Private db As FRIIB 

    Public Sub New(ByVal connection As String) 
     db = New FRIIB(connection) 
    End Sub 

    Public Function Login(ByVal name As String, ByVal password As String) As Boolean 
     Dim GetUser = _ 
      From u In db.GetTable(Of [User])() _ 
      Where u.Name = name _ 
      And u.Password = password _ 
      Select u 
     Return GetUser.Count = 0 
    End Function 
End Class 

let Login usename password = 
    new LinqBase.DamnLogin(insql) |> fun damn -> 
     not <| damn.Login(usename,password) 

und Login-Formular

public partial class LoginForm : Form 
{ 
    bool isAuthorized; 
    bool exit; 

    public bool IsAuthorized { get { return this.isAuthorized; } } 
    public bool IsExit   { get { return this.exit;   } } 

    public LoginForm() 
    { 
     isAuthorized = false; 
     exit   = false; 

     InitializeComponent(); 
    } 

    private void Close_Click(object sender, EventArgs e) 
    { 
     exit = true; 
     this.Close(); 
    } 

    private void LoginButton_Click(object sender, EventArgs e) 
    { 
     if (Login.Text != "") 
     { 
      if (Login.Text.ToUpper() == "ADMIN") 
      { 
       if (Password.Text == Crypto.DecryptStringAES(Model.DecryptRegisteryValue("Password"), "Password")) 
        isAuthorized = true; 
      } 
      else 
      { 
       if (QueryBuilder.Login(Login.Text, Password.Text)) 
        isAuthorized = true; 
      } 
     } 

     this.Close(); 
    } 
}