Pregunta

Soy nuevo en C # y .NET de programación. Quiero diseñar una aplicación que se abre con una pequeña pantalla de inicio de sesión y cuando el usuario presiona el botón "Iniciar sesión", mi programa debe cerrar el formulario de inicio de sesión y pasar a una nueva forma. ¿Cómo puedo lograr este proceso simple?

Gracias.

¿Fue útil?

Solución

Esto podría ser una solución;

En LoginForm;

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

En Program.cs

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

Otros consejos

En función de la estructura general de su aplicación, a menudo me gusta dejar que el control principal forma de lanzar la pantalla de inicio de sesión.

    //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;
        }
    }

El reto aquí es qué forma se pasa al método Application.Run (). Si se inicia la aplicación con un ejemplo de la forma de la conexión y después de cerrar esa forma creo que la aplicación se cerrará. Sin duda, hay varias formas de manejar esto ...

Una manera es pasar una instancia de su formulario principal con el método Application.Run (Esto se relaciona el mensaje de bucle a que instancia de formulario y no la forma de inicio de sesión). En el método OnLoad del formulario principal se puede utilizar un cuadro de diálogo modal para realizar el inicio de sesión. es decir.

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

Si utiliza .ShowDialog (), no se olvide que se envuelve alrededor de un bloque de usar o usar .Dispose en el formulario de inicio de sesión después de que haya terminado. diálogos modelo, deben eliminarse manualmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top