C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ナビゲーションウィンドウでキー入力が受けれない

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86349 / inTopicNo.1)  ナビゲーションウィンドウでキー入力が受けれない
  
□投稿者/ namu (1回)-(2018/01/22(Mon) 14:36:26)

分類:[C#] 

閲覧有難うございます。
当方、VisualStudio 2017を利用してC#のアプリ開発を行っているのですが、行き詰まったところがあり、質問させていただきたく思います。

wpfアプリケーションにてnavigationwindowを配置し、その中のpage1にて左右のキーを認識するためにPreviewKeyDownイベントを設定したのですが、ウィンドウにフォーカスが当たっていてもイベントが実行されません。

どのように記述すれば良いのでしょうか?
引用返信 編集キー/
■86355 / inTopicNo.2)  Re[1]: ナビゲーションウィンドウでキー入力が受けれない
□投稿者/ Hongliang (604回)-(2018/01/22(Mon) 16:34:25)
そのNavigationWindowの中で、物理フォーカスはどこにあたっていますか?
調べ方としては、NavigationWindowのPreviewKeyDownイベントで、e.Sourceを確認します。

もしNavigationWindow自身が物理フォーカスを持っているのであれば、当然ながらPage等へはキー入力イベントは伝達されません。
特に、Page内部にフォーカスを持てる要素(TextBoxとか、Buttonとか、ScrollViewerとか)が存在しない場合、ユーザ操作のみではフォーカスの当てようがないでしょう。

この状況でPageにキー入力を通知したいのであれば、一つの方法として、
1. IKeyInputインターフェイスを定義し、KeyDown(KeyEventArgs)メソッドを定義する
2. キーを受け取りたいPageクラスに、上記インターフェイスを実装する
3. NavigationWindowのPreviewKeyDownイベントで、
 ContentプロパティをIKeyInputにキャストできる場合、そのKeyDownメソッドを呼び出す
といったやり方を思いつきます。
引用返信 編集キー/
■86365 / inTopicNo.3)  Re[2]: ナビゲーションウィンドウでキー入力が受けれない
□投稿者/ namu (2回)-(2018/01/23(Tue) 12:00:15)
No86355 (Hongliang さん) に返信

やはり、おっしゃる通りフォーカスがmain windowにあり、止まってしまっているようです。
作っているものの関係上ボタン等はなく、私の技術力では提示された方法がよく理解できなかったので悩み悩んだ末、今回はgridを複数用意し、状況に応じて表示非表示を切り替えることにしました。

相談にのっていただきありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ