2

我正在把头发拉到这个上面。非常简单的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。那么如何做到这一点呢?

谢谢

4

2 回答 2

5

使用 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 取消击键。

于 2014-10-31T16:27:10.567 回答
0

尝试这个:

if (e.KeyChar == '\b')
于 2014-10-31T16:27:38.813 回答