Existe-t-il des constructions globales que je peux utiliser chaque fois que j'ai besoin d'accéder si les boutons Control, Shift, Alt sont enfoncés? Par exemple à l'intérieurMouseDown
événement d'un TreeView
.
Si c'est le cas, comment?
Utilisez la classe Keyboard
. En utilisant, Keyboard.IsKeyDown
vous pouvez vérifier si Control, Shift, Alt est maintenant enfoncé.
Pour Shift:
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{ /* Your code */ }
Pour le contrôle:
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{ /* Your code */ }
Pour Alt:
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{ /* Your code */ }
Il y a aussi:
// Have to get this value before opening a dialog, or user will have released the control key
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
}
(e.Key == Key.F && e.KeyboardDevice.Modifiers == ModifierKeys.Control)
lieu de tous les autres trucs ...Keyboard.Modifiers == ModifierKeys.Shift
instruction. Si vous voulez attraper la touche Maj mais que vous ne vous souciez pas si d'autres modificateurs sont pressés en même temps, utilisez la(Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift
syntaxe HasFlag ou bien meilleureKeyboard.Modifiers.HasFlag(ModifierKeys.Shift)
WIN+RightArrow
.Keyboard.Modifiers
montre commeNone
la source
C'est ainsi que je le gère (en utilisant PreviewKeyDown), disons que nous recherchons Alt + R ...
Peut-être que quelqu'un peut expliquer pourquoi j'ai dû utiliser e.SystemKey et pas seulement e.Key, peut-être à cause du modificateur? mais cela a fonctionné parfaitement pour moi lors de la recherche de modificateur + touche.
la source
et aussi:
si My.Computer.Keyboard.ShiftKeyDown alors ...
My.Computer.Keyboard.CtrlKeyDown
My.Computer.Keyboard.AltKeyDown
la source
Emprunt en partie à @Josh, et quelque peu similaire à @Krushik, et faisant également référence à une question sur la différence entre KeyEventArgs.systemKey et KeyEventArgs.Key (répondant aux raisons pour lesquelles Josh doit utiliser SystemKey); dans lequel, avec des touches de modification (telles que Alt), e.Key renvoie Key.System, et donc la clé «réelle» est dans e.SystemKey.
Un moyen de contourner ce problème consiste à récupérer d'abord la clé `` réelle '', puis à faire votre conditionnel:
la source