如何将一行添加到多行文本框?

我如何添加一行文本到多行 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实现的唯一方法(我可以看到)是:

  • 克隆
  • 复制到
  • 等于
  • 的GetType
  • GetHashCode的
  • 的GetEnumerator
  • 初始化
  • GetLowerBound
  • GetUpperBound
  • 对GetLength
  • GetLongLength
  • 的GetValue
  • 设定值
  • 的ToString

在这里输入图像说明

@Casperah指出,我正在考虑错误。 一个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)); 

注意 :任何代码都被释放到公共领域。 不需要归属

我会去与System.Environment.NewLine或一个StringBuilder

然后你可以像这样添加一个string生成器的行:

 StringBuilder sb = new StringBuiler(); sb.AppendLine("brown"); sb.AppendLine("brwn"); textbox1.Text += sb.ToString(); 

或NewLine像这样:

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

\r\n附加到string以将文本放在新行上。

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

这将在不同的行上生成两个条目。

尝试这个

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

你也可以试试

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

\r是回车符, \n是新行

你必须直接使用文本框的AppendText方法。 如果您尝试使用“ Text属性,则文本框将不会随着新行的添加而向下滚动。

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

TextBox的“Lines”属性是一个string数组。 根据定义,您不能将元素添加到现有的string[] ,就像您可以添加到List<string> 。 目的根本没有可用的方法。 您必须根据当前的行参考创build一个新的string[] ,并将其分配给行。

使用一点Linq(.NET 3.5或更高版本):

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

这个代码可以根据用户的交互来一次添加一个新行,但是对于用几十个新行初始化一个文本框,它的性能会很差。 如果你设置一个TextBox的初始值,我要么直接使用StringBuilder来设置Text属性(如其他答案所提到的那样),要么设置为操纵Lines属性,使用List来编译集合的值,然后将其转换为数组以分配给行:

 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数组是一个计算的属性,这涉及幕后很多不必要的转换。

Environment.NewLine\r\n的添加不适合我,最初,我的文本框。 我发现我忘了进入文本框的行为属性,并将“ 多行 ”属性设置为“ ”,以添加行! 我只是以为我会加上这个警告,因为没有人在上面的答案,我曾经以为箱子会自动扩大,忘了我需要实际设置Mulitline属性的工作。 我知道这是一个愚蠢的事情(这是周五下午晚些时候发生在我们身上的那种事情),但是它可能会帮助别人记住检查这件事情。 此外,在“外观”部分中,我需要将“ScrollBars”属性设置为“Both”,以便同时获得水平和垂直条,以便实际上可以滚动并完整地查看文本。 因此,这里的答案不仅仅是通过将Environment.NewLine\r\n附加到.Text ,而且还要确保使用正确的属性正确设置了您的框。

只需在您的文本中插入一个换行符。

您不要将行添加为方法。 Multiline只是支持使用换行符。

如果您知道需要多less行,请创build一个包含多个成员(如myStringArray)的String数组。 然后使用myListBox.Lines = myStringArray;