我如何处理winforms keydown事件?
其实我试过这个
private void test_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
test2 tst2 = new test2();
tst2.Show();
}
}
但它只工作一次。有什么问题?
答案 0 :(得分:3)
也许test2
对象正在获得焦点,因此您的表单不会获得后续的keydown事件。
test2
也是一个Windows窗体吗?
我尝试了以下操作并按预期工作(只是为了表明没有以某种特殊方式处理逃生):
int _i = 0;
private void Form1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Escape) {
label1.Text = (++_i).ToString();
}
}
其中label1是表单上的标签。
请注意,您不能为表单设置取消按钮,即CancelButton
必须为null
,否则按ESC
将导致您的申请退出。
感谢Henk Holterman指出这一点。