如何在Windows窗体应用程序中实现键盘按键

时间:2015-11-20 04:16:34

标签: c# .net winforms io

我想在c#windows窗体应用程序中实现键盘按钮按下命令。假设如果达到某个值,我想使用windows窗体应用程序实现按下“L”键。这可能吗?怎么做?

2 个答案:

答案 0 :(得分:3)

这可能会为你做到这一点

但是,更好的方法是将表单的KeyPreview属性设置为true,然后将代码放入表单的keyDown事件中(并将e.Handled = true设置为好吧,防止将键事件传递给任何具有焦点的控件。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.L)
     {
        //Do here
     }
}

您还希望查看MSDN: Handle Keyboard Input at the Form Level哪些状态有关Windows窗体提供了在消息到达控件之前在表单级别处理键盘消息的功能。

修改

WM_KEYDOWN:当按下非系统键时,此消息将以键盘焦点发布到窗口。非系统键是在未按下ALT键时按下的键。

SendKeys:使用SendKeys将键击和击键组合发送到活动应用程序。此类无法实例化。要将键击发送到类并立即继续执行程序流程,请使用“发送”。要等待按键启动的任何进程,请使用SendWait。

所以当你从任何设备接收信号时

System.Windows.Forms.SendKeys.Send("S");

和keyDown

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.S)
     {
        //Shooting Code
     }
     else if (e.KeyCode == Keys.L)
     {
        //Some Other Code
     }
}

除了Programmatically generate keypress events in C#?之外,还会为您提供实现任务的想法

答案 1 :(得分:0)

实际上发生的事情是我通过蓝牙从Arduino和Windows收到一些数据到Windows窗体应用程序 一些传感器远程连接。根据这些数据我有一个游戏开发使用" construct2"我需要控制。 游戏用户使用键盘键来控制它。

在游戏中Key" S"按下它会射击目标,当另一把钥匙按下它会做其他事情。 所以我基本上需要做的是根据Windows窗体应用程序中收到的信号实现键盘按键。  如果可能,请告诉我?我不需要从内部识别关键的新闻事件,但我需要实现按键 来自申请表