Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 如何在C中同时检测多个按键?_C#_Winforms_Keypress - Fatal编程技术网

C# 如何在C中同时检测多个按键?

C# 如何在C中同时检测多个按键?,c#,winforms,keypress,C#,Winforms,Keypress,我正在为我的游戏制作一个地图编辑器,我使用箭头键在地图区域滚动。目前我正在使用KeyDown事件,它可以很好地向上、向下、向左或向右滚动,但我的问题是如何允许对角滚动。目前,如果我按住向右箭头,然后在按住向右箭头的同时按住向下箭头,则向下方向将取代向右滚动,而不是对角滚动到右下角 例如,是否有一种方法可以检查在KeyDown事件中是否按下了另一个箭头键?我如何应对持有多个密钥 谢谢,不容易,第二次击键的向下键阻止第一次击键重复。您需要做的是在KeyDown事件中记录该键已按下。在KeyUp事件中

我正在为我的游戏制作一个地图编辑器,我使用箭头键在地图区域滚动。目前我正在使用KeyDown事件,它可以很好地向上、向下、向左或向右滚动,但我的问题是如何允许对角滚动。目前,如果我按住向右箭头,然后在按住向右箭头的同时按住向下箭头,则向下方向将取代向右滚动,而不是对角滚动到右下角

例如,是否有一种方法可以检查在KeyDown事件中是否按下了另一个箭头键?我如何应对持有多个密钥


谢谢,不容易,第二次击键的向下键阻止第一次击键重复。您需要做的是在KeyDown事件中记录该键已按下。在KeyUp事件中取消该状态。接下来,使用一个250毫秒的计时器,在其滴答事件中检查按键的状态。

不容易,第二次击键的向下键会阻止第一次击键的重复。您需要做的是在KeyDown事件中记录该键已按下。在KeyUp事件中取消该状态。接下来,使用一个250毫秒的计时器,并在其滴答事件中检查按键的状态。

最简单的方法是使用Windows API调用获取键盘上每个按键的状态,然后检查您感兴趣的按键:


您可以在KeyDown/keydup上调用它,检查键盘的状态并采取适当的行动。

最简单的方法是使用Windows API调用获取键盘上每个键的状态,然后检查您感兴趣的键:


您可以在按键下/键上调用它,检查键盘的状态,并采取适当的行动。

谢谢,我考虑过这一点,但我将平台特定的调用保持在最低限度,这样我就可以保留移植到Mono的机会。谢谢,我考虑过这一点,但我将平台特定的调用保持在最低限度,这样我就有机会移植到Mono。干杯,我会这样做。干杯,我会这样做。