Remplacer les touches de raccourci sur .NET RichTextBox
-
06-07-2019 - |
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?
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");
}
}
}