2011-12-11 16 views
7

¿Cómo puedo forzar el enfoque de un formulario? .Focus() no funciona para mí.¿Cómo forzar el enfoque del formulario?

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     form.Focus(); 
    } 
} 

¿Qué estoy haciendo mal?

Respuesta

6

Cabe

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     Application.OpenForms[form.Name].Focus(); 
    } 
} 
+0

no funcionó para mí. si la forma se minimiza y hago clic en el botón 1, la forma no se activa (se coloca en foco). – Jack

+0

lo siento, ¿viste la edición? ¿Cuál intentaste? Seleccionar() o enfocar()? –

+0

funciona bien ahora. ¡Gracias! pero por curiosidad, ¿por qué hacer referencia a la variable 'form' no funciona? – Jack

14

Tiene que mostrar la forma en primer lugar - utilizar el Show() método:

var form = new loginForm(); 
form.Show(); 

Editar: (pregunta actualizada)

Para un formulario existente llamando Activate() podría ser más apropiado, esto también trae el formulario al frente:

private void button1_Click(object sender, EventArgs e) 
{ 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) 
    { 
      form.Show(); 
    } 
    else 
    { 
     Application.OpenForms[form.Name].Activate(); 
    } 
} 

Si se minimiza el formulario, debe suscribirse ser al evento Activated a cambiar su estado de ventana a FormWindowState.Normal:

private void loginForm_Activated(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Normal; 
} 
+0

rigth, edité, comprobar mi código real por favor. :) – Jack

8

Prueba esto:

this.BringToFront(); 
this.Activate(); 
Cuestiones relacionadas