美好的一天,
我想在表单用户控件中添加键侦听器。其中包含主要表格。
当用户在我的应用程序中按下某个键时,我希望它能做一些事情。
我该怎么做?
例如,。如果我按了w,那么会出现一个弹出窗口,说你按了w。
我在用户控件类中试过这个;
private void UC_ControlsTank_KeyPress(object sender, KeyPressEventArgs e)
{
Console.Write("You pressed:" + e.KeyChar);
}
但是当我按键时,似乎没有任何事情发生。
编辑:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString());
}
}
这是我的表格: 以下是我在visual studio中的链接方式:
答案 0 :(得分:8)
首先,在捕获KeyPress之前,您必须将Win Form的KeyPreview
属性设置为true
。除非你将它设置为true,否则不会捕获KeyPress。
答案 1 :(得分:3)
您可以使用<{p}}事件
这个KeyPressed
会告诉你按下了什么键
编辑:
所以我只是在一个示例应用程序上尝试了这个并且它运行良好
System.Windows.Forms.KeyEventArgs e
答案 2 :(得分:2)
这是一个例子,
private void control_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.W:
{
MessageBox.Show("you pressed w");
break;
}
case Keys.B:
{
MessageBox.Show("you pressed b");
break;
}
case Keys.F11:
{
MessageBox.Show("you pressed F11");
break;
}
case Keys.Escape:
{
this.Close();
break;
}
default:
{
break;
}
}
}
或
参考此Overriding Keydown in a User Control using ProcessKeyPreview。