C# - Windows窗体中的KeyDown事件问题

Ine*_*elp 0 c# event-handling keydown winforms

当主窗体加载时,我试图设置一个键事件处理程序,如下所示:

private void FormMain_Load(object sender, EventArgs e)
{
    KeyDown += FormMain_KeyDown;
}
Run Code Online (Sandbox Code Playgroud)

和被调用的函数:

private void FormMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        // Do something.
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是表单不会对Escape(或我试过的任何其他键)做出反应.有趣的是,同一个项目的不同形式使用类似的代码而没有任何问题.谁能告诉我我做错了什么?

Ton*_*son 6

在表单上有一个名为KeyPreview的属性,您需要将其设置为true.然后在按键上你的处理程序将会触发,然后控件上任何具有焦点的处理程序都会触发.