Запрет возврата в Richtextbox с помощью C# .net

Я тяну свои волосы над этим. Очень простая программа для создания окон. У меня есть richtextbox, и я хочу, чтобы backspace ничего не делал в richtextbox. Вот мой код

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

Если я ставлю точку останова на e.handled и набираю клавишу Backspace, она действительно ломается. Однако backspace все еще добирается до richtextbox. Так что я видел примеры использования PreviewKeyDown, однако ни один из этих примеров не работает! Я старался

void richTextBox1.PreviewKeyDown(object sender, KeyPressEventArgs e)
{
     e.Handled = true;
}

Однако KeyPressEventArgs недействителен! Если я использую то, что дает Forms, это PreviewKeyDownEventArgs, а e.Handles недоступно. Так как же это сделать?

Спасибо

2 ответа

Используйте событие KeyDown для отмены нажатия клавиши возврата.

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

Страница MSDN о событии KeyPress содержит следующий комментарий:

Некоторые элементы управления будут обрабатывать определенные нажатия клавиш на KeyDown. Например, RichTextBox обрабатывает клавишу Enter до вызова KeyPress. В таких случаях вы не можете отменить событие KeyPress и вместо этого должны отменить нажатие клавиши из KeyDown.

Попробуй это:

if (e.KeyChar == '\b')
Другие вопросы по тегам