窗口关闭事件和KeyPress

时间:2014-05-29 19:51:16

标签: c# wpf

<Window Closing="Window_Closing"></Window>

假设按键用于关闭窗口。有没有办法确定使用了哪些密钥?

我知道您可以使用KeyDown事件但需要在Closing事件中执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:1)

不要试图确定关闭事件的原因以禁用某些击键,而是禁用所有关闭方法,直到你的秘密&#34;键盘输入。

使用KeyDown事件拦截并记录所有击键,并在输入密码组合时设置标记,然后调用Close()

Closing事件中,除非设置了该标志,否则请始终设置e.Cancel = true

这是一个简单的例子:

bool _allowClose = false;

void OnKeyDown(object sender, KeyEventArgs e)
{
    if (DetectSecretCombo(e))  //Implement however you see fit.
    {
        _allowClose = true;
        Close();
    }
}

void OnClosing(object sender, ClosingEventArgs e)
{
    _e.Cancel = !_allowClose;
}