如何将一行添加到多行文本框?
我如何添加一行文本到多行 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;