使用C#.net防止在richtextbox中退格



我正在为这件事拔头发。非常简单的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')

最新更新