忽略WPF RichTextBox中的Ctrl-L

时间:2011-12-30 20:51:06

标签: wpf keyboard-shortcuts richtextbox

如何从WPF RichTextBox忽略/阻止/删除 Ctrl - L 键盘快捷键?

现在,这与AlignLeft EditingCommand绑定。我想在RichTextBox中使用这个键盘快捷键(删除行)。

我正在处理keyDown事件,但 Ctrl - L 永远无法通过。换句话说,我可以回复 Ctrl - H ,例如,没问题,但 Ctrl - L 已被控件吞噬。

    private void richTextBoxMain_KeyDown (object sender, KeyEventArgs e)
    {

        if ( Keyboard.IsKeyDown(Key.LeftCtrl))
        {
            if (e.Key == Key.L)
            {
                 // never gets here.
            }
        }
    }

3 个答案:

答案 0 :(得分:3)

在页面加载方法(或适当的地方)

中添加此项
KeyBinding keyBinding = new KeyBinding(ApplicationCommands.NotACommand, Key.L, 
                                                         ModifierKeys.Control);
richTextBoxMain.InputBindings.Add(keyBinding);

这将阻止CTRL + L调用它通常执行的命令(由于NotACommand枚举)。您目前在KeyDown方法中使用的代码现在可以使用。

答案 1 :(得分:0)

你可以简单地处理RichtextBox控件上的CommandBinding,如下所示(代码隐藏或xaml):

richTextBoxMain.CommandBindings.Add(new CommandBinding(EditingCommands.ToggleBold, NullOnCommand, NullOnCanExecuteCommand));


private static void NullOnCommand(object sender, ExecutedRoutedEventArgs e)
{
    e.Handled = true;
}

private static void NullOnCanExecuteCommand(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = false;
    e.Handled = true;
}

希望有所帮助。

答案 2 :(得分:0)

可以使用RichTextBox

禁用所有ShortcutsEnabled快捷方式

C#代码:

    RichTextBody.ShortcutsEnabled = false;

Vb.net代码:

    RichTextBody.ShortcutsEnabled = False

默认快捷方式是:

Ctrl - Z -撤消

Ctrl - E

Ctrl - C -复制

Ctrl - Y

Ctrl -退格键

Ctrl - V -粘贴

Shift -删除-删除

Ctrl - L -Align current line to the left, AlignLeft

Shift -插入-粘贴

Ctrl - R -Align current line to the right

您可以在KeyPress事件中处理 Ctrl - L Ctrl - R

C#代码:

vb.net代码:

仅禁用 Ctrl - L