Вот что вы делаете. Создайте свой собственный класс, который наследуется от TextBox. В конструкторе установите для multiline значение true, а для AcceptsTab - значение true. Затем переопределите WndProc и используйте этот код:
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)0x102 && m.WParam.ToInt32() == 13)
{
return;
}
base.WndProc(ref m);
}
Это заблокирует ввод ключа и, следовательно, новая строка не будет создана. Hacky? да, но это сработает ..
РЕДАКТИРОВАТЬ: Я объясню, что делает этот код. Каждая форма и элемент управления Windows получают сообщение Windows, когда что-то происходит, например, рисование, нажатие клавиши и т. Д. И т.д. клавиша была нажата. Если это сообщение и WParam == 13, то это означает, что была нажата Enter, в этом случае return, ничего не делать. Иначе, возобновите как ожидалось. Имеет смысл?