Domanda

Sto usando un RichTextBox (.NET WinForms 3.5) e vorrei sovrascrivere alcuni dei tasti ShortCut standard .... Ad esempio, non voglio Ctrl + I per rendere il testo in corsivo tramite il metodo RichText, ma per eseguire invece il mio metodo per l'elaborazione del testo.

Qualche idea?

È stato utile?

Soluzione

Ctrl + I non è una delle scorciatoie predefinite interessate dalla proprietà ShortcutsEnabled.

Il codice seguente intercetta Ctrl + I nell'evento KeyDown in modo che tu possa fare tutto ciò che vuoi all'interno del blocco if, assicurati solo di sopprimere la pressione del tasto come ho mostrato.

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

Altri suggerimenti

Imposta la proprietà RichtTextBox.ShortcutsEnabled su true, quindi gestisci tu stesso le scorciatoie, usando l'evento KeyUp. Per es.

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");
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top