问题
I want to implement the keyboard button press commands inside a c# windows form application. Suppose if some value is reached I want to implement the key "L" pressed using the windows form application.Is this possible ? How to do it ?
回答1:
This might do the trick for you
However, a better way is probably to set your form's KeyPreview
property to true
, and then put your code into the form's keyDown
event (and set e.Handled = true as well, to prevent the key event from being passed on to whichever control does have the focus).
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.L)
{
//Do here
}
}
You would also like to view MSDN: Handle Keyboard Input at the Form Level which states about Windows Forms provides the ability to handle keyboard messages at the form level, before the messages reach a control.
Edit
WM_KEYDOWN: This message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
SendKeys: Use SendKeys to send keystrokes and keystroke combinations to the active application. This class cannot be instantiated. To send a keystroke to a class and immediately continue with the flow of your program, use Send. To wait for any processes started by the keystroke, use SendWait.
so when you receive signal from any device
System.Windows.Forms.SendKeys.Send("S");
and on 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
}
}
and apart from that Programmatically generate keypress events in C#? will also give you an idea to implement your task
回答2:
Actually what happends is I receive some data to the Windows Form application via bluetooth from a Arduino and some sensors connected remotely. According to those data I have a game Developed using "construct2" which I need to control. The game users keyboard keys to control it.
In the game when Key "S" is pressed it shoots the targets, when another key pressed it does something else. So what I basically need to do is to implement the keyboard key press according to the signals received in the Windows form applications. Please let me know if this is possible ? I do not need to identify the key press events from within but I need to implemet the key press from within the application
来源:https://stackoverflow.com/questions/33818896/how-to-implement-the-keyboard-key-press-in-windows-form-application