Domanda

Sono nuovo di C # e programmazione .NET. Voglio progettare un'applicazione che si apre con un piccolo schermo di login e quando l'utente preme il pulsante "Login", il mio programma dovrebbe chiudere il form di login e passare ad una nuova forma. Come posso realizzare questo semplice processo?

Grazie.

È stato utile?

Soluzione

Questa potrebbe essere una soluzione;

In LoginForm;

public bool IsLoggedIn { get; private set;}
public void LoginButton_Click(object sender, EventArgs e)
{
  IsLoggedIn = DoLogin();
  if(IsLoggedIn)
  {
    this.Close()
  }
  else
  {
    DoSomethingElse();
  }
}

Nel Program.cs

static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  LoginForm loginForm = new LoginForm();
  Application.Run(loginForm);
  if (loginForm.IsLoggedIn)
  {
    Application.Run(new OtherForm());
  }
}

Altri suggerimenti

A seconda della architettura complessiva della vostra applicazione, mi piace spesso di lasciare che il controllo di maschera principale lanciare la schermata di login.

    //Program.cs:
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }

    //MainForm.cs
    private void MainForm_Load(object sender, EventArgs e)
    {
        this.Hide();
        Login login = new Login();
        if (login.ShowDialog() == DialogResult.OK)
        {
            //make assignments from login
            currentUser = login.User;
        }
        else
        {
            //take needed action
            Application.Exit();
            return;
        }
    }

La sfida qui è quale forma si passa al metodo Application.Run (). Se si avvia l'applicazione con un'istanza del form di login e chiudere quella forma Credo che l'applicazione verrà uscire. Non c'è dubbio che ci sono diversi modi per gestire questo ...

Un modo è quello di passare un'istanza del modulo principale per il metodo Application.Run (questa lega il ciclo di messaggi a tale istanza la forma e non la forma di login). Nel metodo OnLoad della maschera principale è possibile utilizzare una finestra di dialogo modale per eseguire il login. cioè.

//--Main form's OnLoad method
protected override void OnLoad(EventArgs ea)
{
    // Remember to call base implementation
    base.OnLoad(ea);

    using( frmLogin frm = new frmLogin() )
    {
        if( frm.ShowDialog() != DialogResult.OK )
        {
            //--login failed - exit the application
            Application.Exit();
        }
    }       
}

Se utilizzati .ShowDialog (), non dimenticate di avvolgerla attorno ad un blocco utilizzando, o utilizzare .Dispose sul modulo di login dopo aver terminato. dialoghi modello devono essere smaltiti manualmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top