Frage

Ich bin mit einem RichTextBox (.NET WinForms 3.5) und möchte einige der Standard-Tastenkombinationen außer Kraft zu setzen .... Zum Beispiel möchte ich nicht Strg + I den Text kursiv über die Richtext-Methode machen, sondern stattdessen meine eigene Methode zur Bearbeitung des Textes ausgeführt werden.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Strg + I ist nicht eine der Standardkombinationen von der ShortcutsEnabled Eigenschaft betroffen.

Der folgende Code fängt den Strg + I in dem Ereignis KeyDown, so dass Sie alles tun, können Sie innerhalb der wollen, wenn Block, so stellen Sie sicher, dass Sie die Taste drücken, zu unterdrücken, wie ich gezeigt habe.

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

Andere Tipps

Stellen Sie die RichtTextBox.ShortcutsEnabled Eigenschaft auf true und behandelt dann die Verknüpfungen selbst, das KeyUp-Ereignis verwenden. Z.

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");
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top