2009-04-28 28 views
0

ユーザーが自分のアプリケーションウィンドウを最小限に抑えることができるシンプルなWPFアプリケーションがあります。ウィンドウが最小化状態からリストア/アクティブ化された後のWPFフォーカステキストボックス

最小化された状態からウィンドウを復元した後、特定のTextBoxにフォーカスを設定する必要があります。

ウィンドウを最小化する前にユーザーがフォーカスを変更していない場合は、アプリケーションを復元した後にすべて問題ありません。

しかし、ユーザーがフォーカスを変更したときに問題が発生します。

My Windowには、Activateイベントハンドラがあります。ウィンドウの後

private void Window_Activated(object sender, EventArgs e) 
{ 
    if (isFullView) 
     tbSearch.Focus(); 
    else 
     tbSearch2.Focus();    
} 

が最小化された状態から復元され、イベントハンドラがトリガーされますが、テキストボックスtbSearchは、フォーカスを受け取るしない:そして、コードは以下の通りです。

私は何か間違っていますか?

ありがとうございました!

+0

isFullViewとは何ですか?コードを表示する必要があります。 – gcores

+0

瞬間isFullView = true –

答えて

1

isFullViewが設定されているとわかりませんが、Focus()はキーボードのフォーカスではなく、論理的なフォーカスを設定しています。フォーカススコープがアクティブなフォーカススコープである場合、コントロールはキーボードフォーカスのみを持ちます。

WPFでのフォーカスの詳細については、this articleをお読みください。

+0

瞬間isFullView = true 私の現在のソリューションでは、最小化ボタンのクリック時にtbSearch.Focus()が呼び出されます –

0

ハンドラが呼び出されるまでにTextBoxが表示されているかどうかを確認してください。おそらく、フォーカスが設定されているよりも遅くTextBoxを表示するトリガーやその他のものがあるかもしれません。

関連する問題