0

WPF4に2つのウィンドウがある.Net4アプリケーションがあります。

  • WS_EX_NOACTIVATEスタイルを使用して、フォーカスが得られないようにします。
  • もう1つは基本的なウィンドウです。

「非アクティブ化」ウィンドウの動作は、基本ウィンドウを選択しないとすぐに適切になります(フォーカスが取得されません)。ただし、基本ウィンドウを選択すると、「非アクティブ化」ウィンドウにフォーカスを合わせることができます...ユーザーがクリックするとウィンドウが表示されます。

これは、WPFが、同じアプリケーションの2つのウィンドウに、想定されていない場合でもフォーカスを与える権利があると見なしたかのようです。両方のウィンドウがWS_EX_NOACTIVATEの場合、この動作は発生しません。

この問題に直面したことがありますか?私はこれを読みました:Visual Studio 2010のWPF–パート3:フォーカスとアクティベーション、しかしそれを解決しません。

編集:非アクティブなウィンドウの基本クラスとしてポップアップを使用することで回避できました。ただし、ポップアップは必要ありません。なぜ !?ポップアップがフォーカスを受け取ることはありません:誰かが理由/方法を知っていますか?この動作をウィンドウに再現するにはどうすればよいですか?ポップアップ/ウィンドウコードにステップインしようとしましたが、あまり明確ではありません!

ありがとう !

4

2 に答える 2

0

WS_EX_TOOLWINDOW も指定してみてください。 http://www.daniweb.com/software-development/csharp/threads/273724/a-form-that-doesnt-steal-focus#

于 2012-11-05T23:09:01.657 に答える
0

わかった。問題を部分的に解決しました。

ウィンドウが直接選択されている場合、ウィンドウは既にフォーカスを取得していますが、ウィンドウのコンポーネントが選択されている場合はフォーカスされません。

追加するだけです:

Focusable = false; 

Window に含まれる任意の WPF コントロールに渡され、前のフォーカスが同じアプリケーションの Window であっても、フォーカスされることはありません。

于 2012-11-06T16:12:31.453 に答える