如何从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.
}
}
}
答案 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