Добавить новую строку в текстовом поле? - PullRequest
0 голосов
/ 27 марта 2020

Итак, я пытаюсь создать терминал типа C#. Я выбрал расширенное текстовое поле для области «оболочка» и, в основном, каждый раз, когда пользователь нажимает клавишу ввода, я добавляю символ на это время. Проблема, однако, в том, что курсор вместо того, чтобы находиться перед символом, находится на новой строке. Вот простой код:

terminal.AppendText("\n>");

Итак, в общем случае, если здесь пробел |, то, что я хочу:

> |

, но я получаю вот что:

>
|

Я знаю, что это может быть связано с более широкой проблемой того, как добавить новую строку при нажатии Enter. Что еще нужно здесь?

Редактировать: Полный код

if(e.KeyCode == Keys.Enter) 
{
   AddLine();
}

, где AddLine():

private void AddLine() 
{
   terminal.AppendText("\n>");
}

Напоминание: terminal - это текстовое поле в моем приложении windows. Кроме того, условный оператор относится к методу KeyDown() расширенного текстового поля.

1 Ответ

1 голос
/ 27 марта 2020

Вам необходимо запретить клавише ввода обрабатывать свое действие в текстовом поле. Попробуйте добавить e.SuppressKeyPress = true; в ваш код:

private void Terminal_KeyDown(object sender, KeyEventArgs e) {
  if (e.KeyCode == Keys.Enter) {
    e.SuppressKeyPress = true;
    terminal.AppendText("\n>");
  }
}
...