Подтвердить что ты не робот

Как добавить строку в многострочный TextBox?

Как добавить строку текста в multi-line TextBox?

например. псевдокод;

textBox1.Clear();
textBox1.Lines.Add("1000+");
textBox1.Lines.Add("750-999");
textBox1.Lines.Add("400-749");
...snip...
textBox1.Lines.Add("40-59");

или

textBox1.Lines.Append("brown");
textBox1.Lines.Append("brwn");
textBox1.Lines.Append("brn");
textBox1.Lines.Append("brow");
textBox1.Lines.Append("br");
textBox1.Lines.Append("brw");
textBox1.Lines.Append("brwm");
textBox1.Lines.Append("bron");
textBox1.Lines.Append("bwn");
textBox1.Lines.Append("brnw");
textBox1.Lines.Append("bren");
textBox1.Lines.Append("broe");
textBox1.Lines.Append("bewn");

Единственными методами, которые TextBox.Lines реализует (что я вижу):

  • Clone
  • CopyTo
  • Равно
  • GetType
  • GetHashCode
  • GetEnumerator
  • Initialize
  • GetLowerBound
  • GetUpperBound
  • GetLength
  • GetLongLength
  • GetValue
  • SetValue
  • ToString

enter image description here

4b9b3361

Ответ 1

@Каспара указал, что я думаю об этом неправильно. A TextBox не имеет строк, он имеет текст. Этот текст можно разделить на CRLF на строки, если требуется, но нет понятия строк.

Вопрос в том, как выполнить то, что я хочу, а не то, что позволяет мне WinForms.

Другие приведенные варианты имеют тонкую ошибку:

  • textBox1.AppendText("Hello" + Environment.NewLine);
  • textBox1.AppendText("Hello" + "\r\n");
  • textBox1.Text += "Hello\r\n"
  • textbox1.Text += System.Environment.NewLine + "brown";

Они либо добавляют, либо добавляют новую строку, если один (может) не требуется.

Итак, вспомогательный помощник:

public static class WinFormsExtensions
{
   public static void AppendLine(this TextBox source, string value)
   {
      if (source.Text.Length==0)
         source.Text = value;
      else
         source.AppendText("\r\n"+value);
   }
}

Итак, теперь:

textBox1.Clear();
textBox1.AppendLine("red");
textBox1.AppendLine("green");
textBox1.AppendLine("blue");

и

textBox1.AppendLine(String.Format("Processing file {0}", filename));

Примечание. Любой код выпущен в общедоступном домене. Не требуется атрибуция.

Ответ 2

Добавьте строку \r\n в строку, чтобы поместить текст в новую строку.

textBox1.Text += ("brown\r\n");
textBox1.Text += ("brwn");

Это приведет к созданию двух записей в отдельных строках.

Ответ 3

Я бы пошел с System.Environment.NewLine или StringBuilder

Затем вы можете добавить строки с построителем строк следующим образом:

StringBuilder sb = new StringBuiler();
sb.AppendLine("brown");
sb.AppendLine("brwn");

textbox1.Text += sb.ToString();

или NewLine:

textbox1.Text += System.Environment.NewLine + "brown";

Ответ 4

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

textBox1.Text += "SomeText\r\n" 

вы также можете попробовать

textBox1.Text += "SomeText" + Environment.NewLine;

Где \r - возврат каретки, а \n - новая строка

Ответ 5

Вы должны использовать метод AppendText текстового поля напрямую. Если вы попытаетесь использовать свойство Text, текстовое поле не будет прокручиваться по мере добавления новой строки.

textBox1.AppendText("Hello" + Environment.NewLine);

Ответ 6

Свойство "Lines" для TextBox представляет собой массив строк. По определению вы не можете добавлять элементы в существующий string[], как вы можете, в List<string>. Для этой цели нет никакого метода. Вместо этого вы должны создать новый string[] на основе текущей ссылки Lines и присвоить его Lines.

Использование небольшого Linq (.NET 3.5 или новее):

textBox1.Lines = textBox.Lines.Concat(new[]{"Some Text"}).ToArray();

Этот код подходит для добавления одной новой строки за раз в зависимости от взаимодействия пользователя, но для инициализации текстового поля с несколькими десятками новых строк он будет работать очень плохо. Если вы устанавливаете начальное значение TextBox, я бы либо установил свойство Text напрямую, используя StringBuilder (как упомянули другие ответы), либо если вы настроены на управление свойством Lines, используйте List для компиляции коллекции и затем преобразовать его в массив, чтобы назначить Lines:

var myLines = new List<string>();

myLines.Add("brown");
myLines.Add("brwn");
myLines.Add("brn");
myLines.Add("brow");
myLines.Add("br");
myLines.Add("brw");
...

textBox1.Lines = myLines.ToArray();

Даже тогда, поскольку массив Lines является вычисленным свойством, это включает в себя много ненужного преобразования за кулисами.

Ответ 7

Добавление Environment.NewLine или \r\n для меня не работало с моим текстовым полем. Я обнаружил, что забыл зайти в текстовое поле Поведение и установить для свойства Многострочное значение " True", чтобы он добавил строки! Я просто подумал, что добавлю это предостережение, так как в ответах выше ничего другого не было, и я подумал, что коробка просто собирается автоматически расширяться и забывать, что мне нужно было установить свойство Mulitline для его работы. Я знаю, это что-то вроде головной части (что происходит с нами поздно вечером в пятницу), но это может помочь кому-то запомнить проверить это. Кроме того, в разделе "Внешний вид" есть свойство "ScrollBars", которое мне нужно установить в "Both", чтобы получить как горизонтальные, так и вертикальные столбцы, чтобы текст действительно мог прокручиваться и отображаться целиком. Таким образом, ответ здесь не просто для кода, добавляя Environment.NewLine или \r\n к .Text, но также убедитесь, что ваше поле правильно настроено с правильными свойствами.

Ответ 8

Просто поместите строку в свой текст.

Вы не добавляете строки как метод. Многострочный просто поддерживает использование разрывов строк.

Ответ 9

Если вы знаете, сколько строк вы хотите, создайте массив String с таким количеством членов (например, myStringArray). Затем используйте myListBox.Lines = myStringArray;