2011-12-30 72 views
2

我怎么能忽略/块/删除按Ctrl忽略CTRL-L在WPF的RichTextBox

现在,这是绑定到AlignLeftEditingCommand。我想在RichTextBox中使用此键盘快捷键来进行其他操作(删除行)。

我目前正在处理keyDown事件,但按Ctrl - 大号从未使它通过。换句话说,我可以给按Ctrl回应 - ^h,例如,没有问题,但按Ctrl - 大号由控制已经吞并。

private void richTextBoxMain_KeyDown (object sender, KeyEventArgs e) 
    { 

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

回答

3

在您的网页加载方法(或某个合适的)加入该

KeyBinding keyBinding = new KeyBinding(ApplicationCommands.NotACommand, Key.L, 
                 ModifierKeys.Control); 
richTextBoxMain.InputBindings.Add(keyBinding); 

这将防止CTRL + L援引与平常不同的命令(由于NotACommand枚举)。您目前在KeyDown方法中的代码现在应该可以工作。

+1

我有System.Windows.Forms.RichTextBox ....它显示我一个错误在行richTextBoxMain.InputBindings.Add(keyBinding); – 2015-10-28 13:23:04

0

你可以简单地处理像下面的(后面的代码或XAML)RichTextBox控件中的CommandBinding:

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; 
} 

希望有所帮助。