2

このプロジェクトを開始する方法が正確にはわかりませんが、私の要件は次のとおりです (実装方法がわからない部分について)。

  • Tab キーを押したままにすると、オーバーレイが表示されます。タブ キーを離すと、オーバーレイが非表示になります。これをグローバルにキャプチャするにはどうすればよいですか?Tab キーがまだ押されていることを確認する最良の方法は何ですか?
  • オーバーレイは、他のすべてのアプリケーションの上に表示されます。フルスクリーンのアプリケーションで表示する必要はありませんが、表示できると最適です。
  • 解像度のスケーリング?それほど重要ではありませんが、ユーザーのモニター解像度に基づいてオーバーレイ スケールのサイズを設定すると便利です。

まだ開始していませんが、どのプロジェクト タイプが最適でしょうか? プレゼンテーションの点でより多くの柔軟性を提供しているように見えるので、WindowsForms よりも WPF を考えていました。上記の点についてアドバイスをいただければ幸いです。

4

1 に答える 1

4

WPF では、次のように実行できます。

グローバル TAB キーの処理については、アプリケーション (通常は App.xaml.cs) のエントリ ポイントで、次のコードを実行します。

EventManager.RegisterClassHandler(typeof(UIElement), UIElement.PreviewKeyUpEvent, new KeyEventHandler(OnPreviewKeyUp));

必要に応じて (Preview)Key(up/Down)Event を使用します。Preview イベント ハンドラーで e.Handled = true を設定すると、イベントはルーティングを停止し、誰もそれに反応できなくなります。

OnPreviewKeyUp で をチェックしe.Key == Key.Tab、オーバーレイ ウィンドウが存在する場合は表示します。


イベント ハンドラーのシグネチャは次のようになります。

private static void OnPreviewKeyUp(object source, KeyEventArgs e)


クリックスルー部分として、ウィンドウを作成し、オーバーレイの背景を次のように設定しますnull

WindowStyle="None" AllowsTransparency="True" Background="{x:Null}"
于 2012-09-17T14:46:24.393 に答える