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

时间:2014-10-31 16:23:32

标签: c# winforms richtextbox keypreview

我把头发拉过这一头。非常简单的窗体程序。我有一个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可用。那怎么做呢?

由于

2 个答案:

答案 0 :(得分:2)

使用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中的击键。

答案 1 :(得分:1)

试试这个:

if (e.KeyChar == '\b')