禁用wpf中的退格键

时间:2009-03-31 05:15:20

标签: wpf

我正在使用C#.net在WPF应用程序中工作 我想知道,有没有办法在特定的xaml页面上禁用 Backspace 按钮。 我想阻止用户在这个特定的xaml页面上使用 Backspace 按钮。即使用户按下 Backspace 按钮,也不会产生任何效果。

由于

3 个答案:

答案 0 :(得分:25)

如果您想阻止退格返回WPF框架中的导航历史记录,包括特殊的“后退”硬件按钮,请使用:

NavigationCommands.BrowseBack.InputGestures.Clear();
NavigationCommands.BrowseForward.InputGestures.Clear();

答案 1 :(得分:6)

您需要捕获onKeyDown事件并将handle设置为true以用于退格。

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Back)
    {
         e.Handled = true;
    }
}

答案 2 :(得分:1)

所以我更喜欢approach by sipwiz因为我不想禁用所有键盘快捷键(我仍然想使用ALT-Left等而不是Backspace)。

对于我使用WPF NavigationWindow,覆盖OnKeyDown方法根本不起作用,当我按下退格键时窗口仍然会导航回来。覆盖OnPreviewKeyDown似乎确实可以开始,但是当我需要Backspace键来处理文本框时,我遇到了问题。

所以我从approach by Ed Andersen获取了我学到的知识,并将以下代码添加到NavigationWindow构造函数中:

KeyGesture backKeyGesture = null;
foreach(var gesture in NavigationCommands.BrowseBack.InputGestures)
{
    KeyGesture keyGesture = gesture as KeyGesture;
    if((keyGesture != null) &&
       (keyGesture.Key == Key.Back) &&
       (keyGesture.Modifiers == ModifierKeys.None))
    {
        backKeyGesture = keyGesture;
    }
}

if (backKeyGesture != null)
{
    NavigationCommands.BrowseBack.InputGestures.Remove(backKeyGesture);
}