Переопределить сочетания клавиш в .NET RichTextBox

StackOverflow https://stackoverflow.com/questions/260716

  •  06-07-2019
  •  | 
  •  

Вопрос

Я использую RichTextBox (.NET WinForms 3.5) и хотел бы переопределить некоторые стандартные клавиши ShortCut .... Например, я не хочу, чтобы Ctrl + I делал текст курсивом с помощью метода RichText, а вместо этого запускаю свой собственный метод для обработки текста.

Есть идеи?

Это было полезно?

Решение

Ctrl + I не является одним из ярлыков по умолчанию, на которые влияет свойство ShortcutsEnabled.

Следующий код перехватывает Ctrl + I в событии KeyDown, так что вы можете делать все, что угодно, внутри блока if, просто не нажимайте клавишу, как я показал.

private void YourRichTextBox_KeyDown(object sender, KeyEventArgs e)
{
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control && e.KeyCode == Keys.I)
    {
        // do whatever you want to do here...
        e.SuppressKeyPress = true;
    }
}

Другие советы

Установите для свойства RichtTextBox.ShortcutsEnabled значение true, а затем обрабатывайте ярлыки самостоятельно, используя событие KeyUp. Например.

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.textBox1.ShortcutsEnabled = false;
            this.textBox1.KeyUp += new KeyEventHandler(textBox1_KeyUp);
        }

        void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.Control == true && e.KeyCode == Keys.X)
                MessageBox.Show("Overriding ctrl+x");
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top