2009-05-04 5 views
2

Ich muss einen Knopf Fokus am Ende eines Threads machen. Die Button.Focus() -Methode scheint nicht zu funktionieren.Wie man einen Knopf Fokus in einem Thread in C macht #

für exmaple:

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

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

Allerdings, wenn ich legte Button2.Focus() in Button1_Click wird es konzentrieren, aber für mein Projekt kann ich das nicht tun.

Antwort

1

Alle Änderungen der Benutzeroberfläche müssen über den Hauptthread des Formulars vorgenommen werden. Sehen Sie sich an, wie Sie die Methode "Invoke" des Formulars aus Ihrem eigenen Thread aufrufen. Sie sollten "Invoke" einen Delegaten an eine Methode übergeben, die die "Fokus" -Methode auf Ihrer Schaltfläche aufruft.

3

Für eine allgemeine Lösung für diese Art von Problemen, werfen Sie einen Blick auf SyncronizationContext Klasse. Für Windows-Formulare können Sie jedoch die Methode Invoke verwenden, und in WPF können Sie Dispatcher.Invoke:

verwenden
Verwandte Themen