Question

J'utilise un RichTextBox (.NET WinForms 3.5) et souhaite remplacer certaines des clés de raccourci standard .... Par exemple, je ne veux pas que Ctrl + I rende le texte en italique via la méthode RichText, mais exécute ma propre méthode de traitement du texte.

Des idées?

Était-ce utile?

La solution

Ctrl + I n'est pas l'un des raccourcis par défaut affectés par la propriété ShortcutsEnabled.

Le code suivant intercepte le raccourci clavier Ctrl + I dans l'événement KeyDown afin que vous puissiez faire tout ce que vous voulez dans le bloc if, assurez-vous de ne pas appuyer sur la touche, comme je l'ai montré.

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

Autres conseils

Définissez la propriété RichtTextBox.ShortcutsEnabled sur true, puis gérez vous-même les raccourcis, à l'aide de l'événement KeyUp. E.G.

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");
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top