web-dev-qa-db-fra.com

Comment forcer le focus de la forme?

Comment puis-je forcer le focus d'un formulaire? .Focus() ne fonctionne pas pour moi.

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

Qu'est-ce que je fais mal?

9
Jack

cA devrait etre 

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

Vous devez d'abord afficher le formulaire - utilisez la méthode Show() :

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

Modifier: (question mise à jour)

Pour un formulaire existant, appeler Activate() pourrait être plus approprié, cela amène également le formulaire au premier plan:

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 le formulaire est minimisé, vous devez vous abonner à l'événement Activated pour modifier l'état de votre fenêtre en FormWindowState.Normal:

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

Essaye ça:

this.BringToFront();
this.Activate();
10
Adriano Patricio

Au début du formulaire, nous ajoutons
this.BringToFront (); this.Activate ();

0
Don Agushi