は、私がここでのKeyDownイベントを作成してくれ特定のKeyDownエラー
ヘルプ表示されます。
キーのみを作成したいです。他のコマンドは表示されません。
私はこれを試していないが、しかし、あなたはちょうど関連したキーボードデバイスのための修飾子をチェックすることができように見える
は、私がここでのKeyDownイベントを作成してくれ特定のKeyDownエラー
ヘルプ表示されます。
キーのみを作成したいです。他のコマンドは表示されません。
私はこれを試していないが、しかし、あなたはちょうど関連したキーボードデバイスのための修飾子をチェックすることができように見える
に私を助けてください:
if (e.Key == Keys.Enter && e.KeyboardDevice.Modifiers == ModifierKeys.None)
{
...
}
は、入力キーと修飾子を確認します。
をprivate void Window_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.Enter) && Keyboard.Modifiers == ModifierKeys.None)
{
MessageBox.Show("Enter Pressed");
}
}
注これはPRを使用すること(私が正しくドキュメントを読んでいるのであれば)イベントを生成したデバイスではない可能性があります。 –
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetKeyboardState(byte[] keyState);
private static readonly byte[] DistinctVirtualKeys = Enumerable.Range(0, 256).Select(KeyInterop.KeyFromVirtualKey)
.Where(item => item != Key.None && item != Key.Enter).Distinct().Select(item => (byte)KeyInterop.VirtualKeyFromKey(item)).ToArray();
public int GetDownKeysCount()
{
var keyboardState = new byte[256];
GetKeyboardState(keyboardState);
var downKeyBytes = DistinctVirtualKeys.ToList().FindAll(virtualKey => (keyboardState[virtualKey] & 0x80) != 0);
return downKeyBytes.Count;
}
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter && e.KeyboardDevice.Modifiers == ModifierKeys.None && GetDownKeysCount() == 0)
{
MessageBox.Show("Enter is pressed");
}
}
おかげ その真&ワーキング –