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 可用。那么如何做到这一点呢?
谢谢
使用 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 取消击键。