Я создаю подкласс TextBox:
class Editor : TextBox
Я переопределил OnKeyDown, потому что я хочу, чтобы вкладки были заменены четырьмя пробелами:
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab) {
SelectedText = " ";
e.SuppressKeyPress = true;
}
}
Это работает, но, к сожалению, это также очищаетбуфер отмены.Конечным результатом является то, что, когда пользователь нажимает на вкладку, Ctrl + Z не работает, и «Отмена» в контекстном меню становится отключенным.Похоже, проблема заключается в «e.SuppressKeyPress = true;»part.
Кто-нибудь знает, как обойти это?
Для получения дополнительной информации я создаю довольно простой текстовый редактор, и я работаю не только с клавишей Tab (как указано выше), но также клавиша Enter.Так что у меня есть эта проблема с Tab и Enter.Я знаю, что этой проблемы не существует с RichTextBox, но по разным причинам я хочу вместо этого использовать TextBox.
Любая помощь будет принята с благодарностью, так как это проблема остановки моего проекта.
Спасибо, Том