如何在C#中捕获删除键按?

thu*_*aso 10 c# wpf keyboard-events winforms

我希望捕获删除键按下,并在按下键时不执行任何操作.如何在WPF和Windows窗体中执行此操作?

Eri*_*ric 29

将MVVM与WPF一起使用时,您可以使用输入绑定捕获XAML中的按键.

            <ListView.InputBindings>
                <KeyBinding Command="{Binding COMMANDTORUN}"
                            Key="KEYHERE" />
            </ListView.InputBindings>
Run Code Online (Sandbox Code Playgroud)


Chr*_*isF 17

对于WPF添加KeyDown处理程序:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
    {
        MessageBox.Show("delete pressed");
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

几乎与WinForms相同:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        MessageBox.Show("delete pressed");
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

别忘了打开KeyPreview.

如果要阻止正在执行的键默认操作,请e.Handled = true按上面所示进行设置.它在WinForms和WPF中是一样的


Lit*_*les 3

我不了解 WPF,但尝试使用该KeyDown事件而不是KeyPressWinforms 的事件。

请参阅有关 Control.KeyPress 的MSDN 文章,特别是短语“非字符键不会引发 KeyPress 事件;但是,非字符键确实会引发 KeyDown 和 KeyUp 事件”。