我想确定 CTRL 键在按下时是 LEFT CTRL 还是 RIGHT CTRL 键。我怎么能这样做?
答案 0 :(得分:1)
显然不是来自.NET内部,但它可以来自Win32 API。
答案 1 :(得分:1)
AFAIK您无法从.net。
中访问此信息但是,您可以使用Win32 API GetAsyncKeyState
来测试特定键当前是否已关闭,这可以区分左右键。 (如果你正在编写一个游戏,那么你可能比Keydown处理程序更适合你,因为GetAsyncKeyState测试密钥是否“现在”下降而不是“在过去的某个时间”按下它,这相当于更好的反应能力)。
答案 2 :(得分:1)
由于您正在编写游戏,因此使用DirectInput可能会有所帮助...... Winforms并不适用于da gaimez IMO ......
Device di_device = new Device(SystemGUID.Keyboard);
di_device.SetCooperativeMode(Nonexclusive|othercrap);
di_device.Acquire();
if(di_device.GetKeyboardState()[Keys.LControl])
{
blargh;
}
用SO文本框编写的代码,未经测试,类似的东西。请注意,您必须包含Microsoft.DirectX.DirectInput
另请注意,我并不是说每次需要输入时都应该启动DirectInput设备。在您启动游戏时创建设备,在程序退出时将其丢弃。
DirectInput为您提供更多控制权......而且您可能会想要使用它。当然在某些时候,您需要使用Winforms [即:在您的程序渲染时,如果用户很快按下按钮会怎么样? GKS不会告诉你的事情]
答案 3 :(得分:1)
您可以使用/dev/random
轻松检查键盘的状态,以确定是否按下了System.Windows.Input.Keybaord.IsKeyDown()
或Right
Left
键:
Control