(WPF を使用) Ctrl+Enterがいつヒットしたかを検出しようとします。だから私はこのコードを試しました:
if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
{
//Do Something
}
機能しないため、明らかにこれは正しくありません。正しい方法がどうあるべきかを説明して、誰かが私を助けてくれますか?
ありがとう
明らかe.Key
に、同じイベントで複数の異なる値と等しくなることはありません。
を使用するイベントの 1 つを処理する必要がKeyEventArgs
あります。そこには、Control
やなどのプロパティがありModifiers
、組み合わせを検出するのに役立ちます。
を使用するKeyPress
イベントにはKeyPressEventArgs
、十分な情報がありません。
Drat、あなたは WPF だと言いましたね。が必要なようですe.KeyboardDevice.Modifiers
。
SpecialKey Handler が必要だと思います。ここで解決策を見つけました。
参照されたリンクの次のコードは、問題を解決する可能性があります。
void SpecialKeyHandler(object sender, KeyEventArgs e)
{
// Ctrl + N
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N))
{
MessageBox.Show("New");
}
// Ctrl + O
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O))
{
MessageBox.Show("Open");
}
// Ctrl + S
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S))
{
MessageBox.Show("Save");
}
// Ctrl + Alt + I
if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I))
{
MessageBox.Show("Ctrl + Alt + I");
}
}
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)