我正在为这件事拔头发。非常简单的windows窗体程序。我有一个richtextbox,我想防止退格在richtextbox中执行任何操作。这是我的代码
private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Back)
{
e.handled = true;
}
}
如果我在e.handled上放了一个断点,然后我键入了一个退格,它确实会断开。然而,退格仍然可以到达richtextbox。所以我看到了使用PreviewKeyDown的例子,但这些例子都不起作用!我试过
void richTextBox1.PreviewKeyDown(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
但是KeyPressEventArgs无效!如果我使用Forms提供的PreviewKeyDownEventArgs,并且没有可用的e.Handles。那么如何做到这一点呢?
感谢
使用KeyDown事件取消按退格键。
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
e.Handled = true;
}
}
关于KeyPress事件的MSDN页面有以下评论:
某些控件将在KeyDown上处理某些按键笔划。例如,RichTextBox在调用KeyPress之前处理Enter键。在这种情况下,不能取消KeyPress事件,而必须取消KeyDown中的键笔划。
试试这个:
if (e.KeyChar == 'b')