Запрет возврата в 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.