Pregunta

Estoy usando un RichTextBox (.NET WinForms 3.5) y me gustaría anular algunas de las teclas estándar de ShortCut ... Por ejemplo, no quiero que Ctrl + I ponga el texto en cursiva a través del método RichText, sino que ejecute mi propio método para procesar el texto.

¿Alguna idea?

¿Fue útil?

Solución

Ctrl + I no es uno de los accesos directos predeterminados afectados por la propiedad ShortcutsEnabled.

El siguiente código intercepta Ctrl + I en el evento KeyDown para que pueda hacer lo que quiera dentro del bloque if, solo asegúrese de suprimir la presión de la tecla como he mostrado.

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

Otros consejos

Establezca la propiedad RichtTextBox.ShortcutsEnabled en verdadero y luego maneje los accesos directos usted mismo, utilizando el evento KeyUp. Por ejemplo,

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");
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top