KeyEventArgs不响应按escape键

本文关键字:escape 不响应 KeyEventArgs | 更新日期: 2023-09-27 18:08:47

我有一个WinForm应用程序,我希望使用escape按钮来关闭一个控件。我已经在KeyPress上创建了一个事件,当我使用Escape以外的任何其他键时,这个事件都会起作用。

private void ProductsView_KeyPress(object sender, KeyPressEventArgs e) 
{
    if (e.KeyChar == (char) Keys.B  || e.KeyChar == (char)Keys.Escape)
    {
        //Magic happens
    }
}

如果我按'b'一切按预期工作,但如果我按'Escape',事件不会被触发(是的,我的Escape按钮工作)。我不知道什么会导致这个问题,我也试过KeyUp &KeyDown事件。

KeyEventArgs不响应按escape键

您可以创建嵌套控件和覆盖方法ProcessCmdKey:

    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
        switch (keyData)
        {
            case System.Windows.Forms.Keys.Escape:
            {
                //...magic
            }
        }
    }