我有以下代码:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.N)
{
richTextBox1.Select(1, 3);
}
}
按N键时,所选文本将替换为“n”。我读了Selecting text in RichTexbox in C# deletes the text,但它没有效果。
我正在使用Windows窗体。
答案 0 :(得分:1)
可能,你需要e.Handled = true;在此停止事件。
http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.handled.aspx
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.N)
{
richTextBox1.Select(1, 3);
e.Handled = true;
}
}
答案 1 :(得分:0)
亲自尝试:
打开编辑器,键入一些文本,标记部分文本并按N
。怎么了?标记的文本将替换为n
您的RichTextBox
也会发生同样的事情。这里要理解的重要一点是,对于您设置的事件,您只需添加一些功能并保持默认事件处理(由操作系统处理)完整。
所以使用你的代码,按键就可以了
richTextBox1.Select(1, 3);
选择一些字符,然后默认事件处理开始。因此,有一些标记的文本被N
替换。
因此,您只需将事件标记为由您自己处理。不使用Handled
- 属性,但使用SuppressKeyPress
- 属性。
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.N)
{
richTextBox1.Select(1, 3);
e.SuppressKeyPress = true;
}
}
If you set Handled to true on a TextBox, that control will
not pass the key press events to the underlying Win32 text
box control, but it will still display the characters that the user typed.