WPF アプリケーションのCtrl+TabとCtrl+ Shift+をトラップするサンプル コードは何ですか?Tab
イベントを作成KeyDown
し、入力ジェスチャを使用してコマンド バインディングを追加しようとしましたが、これら 2 つのショートカットをトラップすることはできませんでした。
WPF アプリケーションのCtrl+TabとCtrl+ Shift+をトラップするサンプル コードは何ですか?Tab
イベントを作成KeyDown
し、入力ジェスチャを使用してコマンド バインディングを追加しようとしましたが、これら 2 つのショートカットをトラップすることはできませんでした。
どの KeyDown ハンドラがありましたか? 以下のコードは私にとってはうまくいきます。私に問題を引き起こすのは: Alt+Tabですが、あなたはそれを求めていませんでした:D
public Window1()
{
InitializeComponent();
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)HandleKeyDownEvent);
}
private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift))
{
MessageBox.Show("CTRL + SHIFT + TAB trapped");
}
if (e.Key == Key.Tab && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show("CTRL + TAB trapped");
}
}
グスタボの答えはまさに私が探していたものでした. 入力キーを検証したいのですが、貼り付けは許可します。
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if ((e.Key == Key.V || e.Key == Key.X || e.Key == Key.C) && Keyboard.IsKeyDown(Key.LeftCtrl))
return;
}
KeyUp
ではなく、イベントを使用する必要がありKeyDown
ます...
Szymon Rozgaの回答の作業バージョン(申し訳ありませんが、コメントできません)。Alt は見ていませんが、次の場合に最初にアカウンティングを簡単に追加できます。
public View()
{
InitializeComponent();
AddHandler(Keyboard.PreviewKeyDownEvent, (KeyEventHandler)controlKeyDownEvent);
}
private void controlKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
{
if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
MessageBox.Show("CTRL + SHIFT + TAB trapped");
else
MessageBox.Show("CTRL + TAB trapped");
}
}
こんにちは、キーダウンイベントでこれを使用できます
private void OnButtonKeyDown(object sender, KeyEventArgs e)
{
if(Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.Tab) && Keyboard.IsKeyDown(Key.LeftShift))
{
//
// TODO: somthing here
//
}
}