2009-10-27 14 views
6

Utilizando Windows Forms Me gustaría tener una pequeña pantalla de inicio de sesión que el usuario autorice a sí mismo (digamos su Form1), por lo que la aplicación principal (digamos su Form2) se abriría después de iniciar sesión. Pero supongo que cuando uso Application.Run (Form1), después de cerrarlo, se cierra toda la aplicación.Windows Forms: crea la aplicación principal después del inicio de sesión, ¿qué formulario ejecutar?

¿No hay otra forma que no sea utilizar Form2 invisible? ¿Algo parecido a ejecutar Form2 a pedido y cerrar ejecutó originalmente Form1? Espero que tenga sentido :)

+0

[Ver mi respuesta a esta pregunta] (http://stackoverflow.com/questions/1623695/how-to-end-process-after-closing-whole-application-in-c-net/1623878#1623878) –

+0

Supongo que se puede implementar fácilmente al iniciar el Formulario de inicio de sesión desde el evento MainForm Load. Lo he explicado aquí: http://walaapoints.blogspot.com/2011/06/login-form-main-form.html –

Respuesta

10

Crear una sobrecarga de System.Windows.Forms.ApplicationContext, cree Form1 primero y luego Form2 en su constructor.

Utilice la sobrecarga Application.Run que acepte el objeto ApplicationContext.

+3

+1. También hay un artículo en CodeProject (http://www.codeproject.com/KB/cs/applicationcontextsplash.aspx) que muestra cómo crear una pantalla de inicio antes del formulario principal usando 'ApplicationContext', pero también tiene una explicación simple de cómo todo funciona – Groo

-1

Pruebe este enfoque. Desde la línea principal de su programa, cree su clase de formulario principal, dentro de esta clase tenga una función "ir" que llame a un formulario de inicio de sesión. Si esta función devuelve verdadero, puede continuar con una llamada a Application.Run (formulario).

MainForm form = new MainForm(); 
form.Show(); 
if (form.go()) 
{ 
    Application.Run(form); 
} 
else 
{ 
    form.Close(); 
} 

class MainForm 
{ 
    public bool go() 
    { 
    LoginFrom lf = new LoginForm() 
    if (lf.ShowDialog() != DialogResult.OK) 
    { 
     return false; 
    } 
    } 
} 

Tal vez un poco simplista, pero debería hacerlo avanzar en la dirección correcta.

3

Puede llamar a su formulario de autenticación antes de utilizar el formulario principal de la aplicación en el interior de Program.cs (nombre predeterminado), tales como:

static void Main() 
    { 
     Form1 f1 = new Form1(); 
     DialogResult dr = f1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      Application.Run(new Form2()); 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 

Dentro de Form1 si se autentican correctamente, entonces sólo tiene que terminar con:

this.DialogResult = DialogResult.OK; 
    this.Close(); 

Si la autenticación falla, se puede permitir que se vuelva a intentar la autenticación, darles un número máximo de intentos, etc. Luego, cuando se decida que han tenido demasiado acaba de llamar

Application.Exit(); 
0

Trate de usar los ajustes en las propiedades del proyecto

  1. ir a las características
  2. Ir a la pestaña Configuración del proyecto, y crear agrícola 'lcheck' de tipo bool y el valor es 'falso'
  3. Let Form1 se formulario principal y de inicio de sesión Form2 se forma
  4. uso mientras bucle en función FormLoad form1- como

    while(System.properties.default.lcheck!=true) 
    { 
        authentication process: 
    } 
    

Nota: Tengo una duda sobre este proceso. Alguien puede ser capaz de cambiar la configuración de la carpeta appdata de la aplicación.

Cuestiones relacionadas