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

Tom*_*Tom 2 c# richtextbox winforms keypreview

我正在把我的头发拉到这个上面。非常简单的windows窗体程序。我有一个富文本框,我想防止退格键在富文本框中执行任何操作。这是我的代码

private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (e.KeyChar == (char)Keys.Back)
     {
          e.handled = true;
     }
}
Run Code Online (Sandbox Code Playgroud)

如果我在 e.handled 处放置一个断点并输入一个退格,它确实会中断。然而,退格键仍然使它进入富文本框。所以我看到了使用 PreviewKeyDown 的例子,但是这些例子都没有!我试过

void richTextBox1.PreviewKeyDown(object sender, KeyPressEventArgs e)
{
     e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

但是 KeyPressEventArgs 无效!如果我使用 Forms 提供的 PreviewKeyDownEventArgs 并且没有 e.Handles 可用。那么如何做到这一点呢?

谢谢

dod*_*ald 5

使用 KeyDown 事件取消退格键按下。

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.Back)
     {
          e.Handled = true;
     }
}
Run Code Online (Sandbox Code Playgroud)

关于 KeyPress 事件的 MSDN 页面有以下评论:

某些控件将处理 KeyDown 上的某些击键。例如,RichTextBox 在调用 KeyPress 之前处理 Enter 键。在这种情况下,您不能取消 KeyPress 事件,而必须从 KeyDown 取消击键。