winforms keydown事件不起作用

时间:2009-09-02 08:26:52

标签: c# winforms events

我如何处理winforms keydown事件?

其实我试过这个

private void test_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Escape)
        {
            test2 tst2 = new test2();
            tst2.Show();
        }
    }

但它只工作一次。有什么问题?

1 个答案:

答案 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指出这一点。