10 votes

Exemples de connexion en C#

J'ai des difficultés à masquer mon formulaire principal pour un formulaire de connexion. Une fois que l'utilisateur s'est connecté, il faut fermer le formulaire de connexion et afficher le formulaire principal.

Je me suis tellement embrouillé que j'ai supprimé tous les codes et recommencé à zéro. Je peux masquer le formulaire de connexion sans problème.

Je n'ai pas réussi à masquer le formulaire principal appelé avec

Application.Run(new MainForm());

Le formulaire de connexion ressemble à ceci :

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");
            }

        }
    }
}

Je n'arrive pas à trouver comment masquer puis afficher le formulaire principal une fois la connexion passée.

Merci. Tout exemple serait le bienvenu.

27voto

Timwi Points 30896
  1. Utilisez ShowDialog() pour ouvrir le formulaire de connexion. Vous n'avez donc pas besoin de masquer ou de désactiver vous-même le formulaire principal. En fait, si vous souhaitez que le formulaire de connexion apparaisse au début de l'application, pensez à l'afficher avant même de charger le formulaire principal :

    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. Dans votre formulaire de connexion, dans button1_Click utiliser

    DialogResult = DialogResult.OK;

    pour fermer le formulaire de connexion et passer le OK résultat au Mainform. Il n'est pas nécessaire de Dispose() .

0voto

ShaneB Points 1384

Utilisez la fonction ShowDialog() sur le formulaire de connexion pour charger le formulaire de connexion à partir du formulaire principal de l'application. Cela empêchera l'affichage du formulaire principal jusqu'à ce que le formulaire de connexion soit terminé.

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

0voto

Heather Points 8785

Alors ... Voici mon login :) Vous pouvez aimer ou ne pas aimer, mais alors ... Voici ma solution.

    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() );
    }

et voici une description du 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)

et formulaire de connexion

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();
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X