我正在使用RichTextBox
(.NET WinForms 3.5)并且想覆盖一些标准的快捷键......例如,我不希望Ctrl+I通过 RichText 方法使文本斜体,而是运行我的自己处理文本的方法。
有任何想法吗?
我正在使用RichTextBox
(.NET WinForms 3.5)并且想覆盖一些标准的快捷键......例如,我不希望Ctrl+I通过 RichText 方法使文本斜体,而是运行我的自己处理文本的方法。
有任何想法吗?
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;
}
}
将 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");
}
}
}