【问题标题】:Disable backspace in wpf在 wpf 中禁用退格键
【发布时间】:2016-06-14 07:53:31
【问题描述】:

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

谢谢

【问题讨论】:

    标签: wpf


    【解决方案1】:

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

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

    【讨论】:

    • 这在代码中的什么地方?在 App.xaml.cs 什么的?
    • 好吧,把它放在NavigationWindow构造函数中。
    【解决方案2】:

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

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

    【讨论】:

    • 如果他的意思是导航,那么情况可能会更复杂一些,因为您可能还需要处理 Alt+Left 和一些鼠标按钮。
    • 这实际上应该处理 PreviewKeyDown 事件,否则如果另一个控件有焦点(如 TextBox),则按键不会被拦截。既然他没有说他为什么要禁用退格键,也许他想在输入控件中支持它。
    • 谢谢。在 XBAP 中,处理 KeyDown (not PreviewKeyDown) 可以解决问题,另一个解决方案看起来更干净 (NavigationCommands...InputGestures.Clear()) - 但在 XBAP 中对我不起作用。
    • 我更喜欢这种方法,因为我不想禁用所有键盘快捷键(我仍然想使用 ALT-Left 等而不是 Backspace)。对于我使用 WPF NavigationWindow,覆盖 OnKeyDown 方法不起作用,但覆盖 OnPreviewKeyDown 确实有效。
    【解决方案3】:

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

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

    所以我从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);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 2015-10-07
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2012-11-05
      相关资源
      最近更新 更多