0

我有一个 WinForm 应用程序,我希望在其中使用退出按钮来关闭控件。我在 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”,则不会触发事件(是的,我的退出按钮有效)。我不知道是什么导致了这个问题,我也尝试过 KeyUp 和 KeyDown 事件。

4

1 回答 1

0

您可以创建嵌套控件并覆盖方法 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
            }
        }
    }
于 2015-08-20T07:48:40.237 回答