Игнорировать Ctrl-L в WPF RichTextBox - PullRequest
3 голосов
/ 31 декабря 2011

Как можно проигнорировать / заблокировать / удалить комбинацию клавиш Ctrl - L из WPF RichTextBox ?

Прямо сейчас это связано с 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 ]

3 голосов
/ 31 декабря 2011

Добавьте это в свой метод загрузки страницы (или где-нибудь подходящий)

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

Это не позволит CTRL + L вызывать команду, которую она обычно делает (из-за перечисления NotACommand). Код, который у вас есть в вашем методе KeyDown, теперь должен работать.

0 голосов
/ 16 мая 2019

Все RichTextBox ярлыки можно отключить с помощью ShortcutsEnabled

Код C #:

    RichTextBody.ShortcutsEnabled = false;

Код Vb.net:

    RichTextBody.ShortcutsEnabled = False

Ярлыки по умолчанию:

Ctrl - Z - отмена

Ctrl - E

Ctrl - C - копия

Ctrl - Y

Ctrl - Backspace

Ctrl - V - вставить

Shift - Удалить - удалить

Ctrl - L - Выровнять текущую строку влево, AlignLeft

Shift - Вставка - вставка

Ctrl - R - Выровнять текущую строку вправо

Вы можете обработать Ctrl - L и Ctrl - R в событии KeyPress

код C #:

код vb.net:

Чтобы отключить только Ctrl - L

0 голосов
/ 02 марта 2012

Вы можете просто обработать CommandBinding в элементе управления RichtextBox, как показано ниже (код позади или 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;
}

Надеюсь, это поможет.

...