uwp禁用Richeditbox键盘shorcuts

时间:2017-07-18 14:31:08

标签: c# uwp windows-10-universal

有没有办法在uwp app中禁用RichEditBox控件上的键盘快捷键?我想禁用Ctrl-A,Ctrl-2(更改行间距),Ctrl-R(右对齐)等键组合。 RichEditBox是UserControl的一部分。

我尝试使用richEditBox的KeyDown事件,但仍然按Ctrl-A选择所有文本:

  private void OnRichEditBoxKeyDown(object sender, KeyRoutedEventArgs e)
    {
        var ctrl = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);                     

        if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
        {
            if (e.Key == VirtualKey.A)
            {
                e.Handled = true;                    
            }
        }           
    }

如何在UWP App中禁用默认的ctrl键盘快捷键?我正在使用 Microsoft Windows [版本10.0.14393]。

1 个答案:

答案 0 :(得分:2)

  1. 覆盖OnKeyDown
  2. 中的Richeditbox个事件
  3. 检查您的按键
  4. 以下是代码示例:

    在代码背后

    public class MyRichEditBox : RichEditBox
    {
        protected override void OnKeyDown(KeyRoutedEventArgs e)
        {
            var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
    
            if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
            {
                //return; //if you want to totally disable crtl
                if (e.Key == VirtualKey.A)
                {
                    return;
                }
            }
            base.OnKeyDown(e);
        }
    }
    

    在XAML中

    <local:MyRichEditBox/>