2009-05-04 11 views
2

Je dois faire un focus sur un bouton à la fin d'un fil. La méthode Button.Focus() ne semble pas fonctionner.Comment faire un focus de bouton dans un fil en C#

pour exmaple:

Button1_Click(object sender, EventArgs e) 
{ 
    Thread myThread = new Thread(theThread); 
    myThread.Start(); 
} 

theThread() 
{ 
    ... 
    Button2.Focus(); // does not seem to focus the button 
} 

Cependant, si je mets Button2.Focus() dans Button1_Click il se concentrera, mais pour mon projet je ne peux pas le faire.

Répondre

1

Toute modification de l'interface utilisateur doit être effectuée à partir du thread principal du formulaire. Cherchez à appeler la méthode "Invoke" du formulaire à partir de votre propre thread. Vous souhaiterez passer "Invoke" un délégué à une méthode qui appelle la méthode "Focus" sur votre bouton.

3

Pour une solution générique à ce genre de problèmes, jetez un oeil à SyncronizationContext classe. Pour les formes Windows, cependant, vous pouvez utiliser la méthode Invoke et WPF, vous pouvez utiliser Dispatcher.Invoke:

//WinForms: 
Invoke(delegate{ Button2.Focus(); }); 
Questions connexes