2

我正在使用RichTextBox(.NET WinForms 3.5)并且想覆盖一些标准的快捷键......例如,我不希望Ctrl+I通过 RichText 方法使文本斜体,而是运行我的自己处理文本的方法。

有任何想法吗?

4

2 回答 2

5

Ctrl+I不是 ShortcutsEnabled 属性影响的默认快捷方式之一。

下面的代码拦截了KeyDown 事件中的Ctrl+ I,因此您可以在 if 块中执行任何您想做的事情,只需确保像我展示的那样抑制按键。

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;
    }
}
于 2008-11-04T04:13:07.607 回答
4

将 RichtTextBox.ShortcutsEnabled 属性设置为 true,然后使用 KeyUp 事件自行处理快捷方式。例如

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");
        }
    }
}
于 2008-11-04T03:52:26.400 回答