2011-12-30 32 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; 
} 

希望有所幫助。