Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#KeyDownEvent如何分配双键组合?_C#_Visual Studio_Keydown - Fatal编程技术网

C#KeyDownEvent如何分配双键组合?

C#KeyDownEvent如何分配双键组合?,c#,visual-studio,keydown,C#,Visual Studio,Keydown,在C#中的KeyDownEvent中,我需要一个两个键的组合,但不知道如何创建它,因为我需要它用于某个函数可能是lshift key+F4,但如何编写它 类似:private void KeyDownEvent(int-keyId,string-keyName) case Keys.F4: .............. case key.F5: .............. case Keys.F6: .............. 大小写键。lshift键+F7:(?) 代码不完整,因为我只需要

在C#中的KeyDownEvent中,我需要一个两个键的组合,但不知道如何创建它,因为我需要它用于某个函数可能是lshift key+F4,但如何编写它

类似:
private void KeyDownEvent(int-keyId,string-keyName)
case Keys.F4:
..............
case key.F5:
..............
case Keys.F6:
..............
大小写键。lshift键+F7:
(?)

代码不完整,因为我只需要知道如何编写两个键的组合

如果您需要更多信息,只需说出以下文字:)


问候语

最简单的方法是使用.net 3.0之后提供的键盘类

private void KeyDownEvent(int keyId, string keyNum)
{
   case Keys.F7:
      if(Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)
   {
      //do stuff
   }
}
另一种方法是在方法(全局)之外生成一个布尔值,当按下某个键时,该值可以变为true。您还需要附加到KeyUpEvent,以便在该布尔值停止时将其恢复为false。下面是一个例子:

bool shiftKeyPressed = false

private void KeyDownEvent(int keyId, string keyName)
{
   case Keys.LShiftKey: shiftKeyPressed = true;
   case Keys.F7:
      if(shiftKeyPressed){//do stuff}
}

private void KeyUpEvent(int keyId, string keyName)
{
   case Keys.LShiftKey: shiftKeyPressed = false;
}
您可以使用static属性确定Shift是否已按下:

case F7:
    if(ModifierKeys == Keys.Shift)
        // now you do your Shift-F7 logic
    break;

Keydown并不是进行和弦键检查的正确位置。但是,你可以做的是检查你的另一个密钥处理程序中的左移键的状态。注意,前者驻留在演示文稿基金会(WPF)中,这可能是或可能不是一个可接受的导入。