2009-05-04 11 views
2

スレッドの最後にボタンをフォーカスする必要があります。 Button.Focus()メソッドが機能していないようです。 exmapleためC#のスレッドでボタンフォーカスを行う方法

:私はのButton1 ClickでButton2.Focus()を置けば

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

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

しかし、それは焦点を当てますが、私のプロジェクトのために私はそれを行うことはできません。

答えて

1

フォームのメインスレッドからUIを変更する必要があります。自分のスレッドからフォームの "Invoke"メソッドを呼び出すことに注目してください。あなたは、ボタンの "Focus"メソッドを呼び出すメソッドにデリゲートを "呼び出す"ように渡す必要があります。

3

これらの問題の一般的な解決方法については、SyncronizationContextクラスをご覧ください。ただし、Windowsフォームの場合はInvokeメソッドを使用でき、WPFではDispatcher.Invokeを使用できます。

//WinForms: 
Invoke(delegate{ Button2.Focus(); }); 
関連する問題