我正在构建一个小型的表单应用程序,刚刚开始。
但我遇到了这个问题:
如果我将控件放在表单上,KeyDown事件无法触发。我知道有KeyPreview属性,并将其设置为true。但是没有帮助... :( 我还尝试将焦点设置为主表单,但也没有成功。
你有什么想法吗?
编辑:
你有什么想法吗?
编辑:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyDown += new KeyEventHandler(Form1_KeyDown);
this.KeyPreview = true;
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left: MessageBox.Show("Left");
break;
case Keys.Right: MessageBox.Show("Right");
break;
}
}
}
KeyPreview
与KeyUp
结合使用效果更佳,并且可以正确处理修饰键 SHIFT、ALT 和 CTRL。相比使用ProcessCmdKey
,我发现这种方法更可取,因为在那里,Shift 键是单独处理的,而键组合则需要进行状态跟踪。 - Memetican