Pergunta

Eu estou usando um RichTextBox (.NET WinForms 3.5) e gostaria de substituir algumas das teclas de atalho padrão .... Por exemplo, eu não quero Ctrl + I para tornar o texto itálico através do método RichText, mas em vez disso, executar o meu próprio método para processar o texto.

Todas as idéias?

Foi útil?

Solução

Ctrl + I não é um dos atalhos padrão afetados pela propriedade ShortcutsEnabled.

Os seguintes intercepta código do Ctrl + I no evento KeyDown de modo que você pode fazer o que quiser dentro do bloco if, apenas certifique-se de suprimir a imprensa chave como eu mostrei.

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

Outras dicas

Defina a propriedade RichtTextBox.ShortcutsEnabled como true e, em seguida, lidar com os atalhos do mesmo, usando o evento KeyUp. Por exemplo.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top