14

私は次のコードを持っています:

public void tbSpeed_KeyDown(object sender, KeyRoutedEventArgs e)
{
    e.Handled = !((e.Key >= 48 && e.Key <= 57) || (e.Key >= 96 && e.Key <= 105) || (e.Key == 109) || (e.Key == 189));
}

Shiftなどの修飾キーが押されているかどうかを検出する方法はありますか?

4

4 に答える 4

21

GetKeyStateを使用します。例えば

var state = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift);
return (state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;

:Altの場合は、VirtualKey.Menuを使用します。

于 2012-10-22T11:22:55.573 に答える
7

Win10 UWPの場合、CTRLキーとSHIFTキーがロック状態に設定されていることに気付きました。だから私は次のことをしました:

var shiftState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift);
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);

var isShiftDown = shiftState != CoreVirtualKeyStates.None;
var isCtrlDown = ctrlState != CoreVirtualKeyStates.None;
于 2016-04-26T15:11:24.423 に答える
0

次のコードを試すことができます

CoreVirtualKeyStates controlKeyState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
var  ctrl = (controlKeyState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;

CoreVirtualKeyStates shiftKeyState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift);
var shift = (shiftKeyState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
于 2012-10-23T09:34:31.953 に答える
-1

Bitwise ANDキー付きキーボードのModifiersプロパティShift-

bool isShiftKeyPressed = (Keyboard.Modifiers & ModifierKeys.Shift)
                         == ModifierKeys.Shift;

これも試してみてください-

bool isShiftKeyPressed = (ModifierKeys & Keys.Shift) == Keys.Shift;

また

Control.ModifierKeys == Keys.Shift
于 2012-10-21T19:16:43.707 に答える