如何将一行添加到多行文本框?
如何添加一行文字到multi-lineTextBox
?如何将一行添加到多行文本框?
例如伪代码;
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器具(即我可以看到)是:
- 克隆
- CopyTo从
- 的Equals
- 的GetType
- 的GetHashCode
- 的GetEnumerator
- 初始化
- GetLowerBound
- GetUpperBound
- GetLength进行
- GetLongLength
- 的GetValue
- 的SetValue
- 的ToString
@Casperah指出我在想它是错的。 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));
注意:任何代码发布到公共领域。无需归属。
附加一个\r\n
字符串把文本在新的一行。
textBox1.Text += ("brown\r\n");
textBox1.Text += ("brwn");
这将在不同的行上产生两个条目。
只需在您的文本中插入一个换行符。
您不添加行作为方法。 Multiline仅支持使用换行符。
我将与System.Environment.NewLine
或StringBuilder
去。然后你可以用字符串生成器,这样添加行:
StringBuilder sb = new StringBuilder();
sb.AppendLine("brown");
sb.AppendLine("brwn");
textbox1.Text += sb.ToString();
或换行是这样的:
textbox1.Text += System.Environment.NewLine + "brown";
试试这个
textBox1.Text += "SomeText\r\n"
你也可以尝试
textBox1.Text += "SomeText" + Environment.NewLine;
哪里\r
是回车和\n
是新线
你必须直接使用文本框的AppendText
方法。如果您尝试使用Text
属性,则文本框不会随着新行的添加而向下滚动。
textBox1.AppendText("Hello" + Environment.NewLine);
TextBox的“Lines”属性是一个字符串数组。根据定义,您不能将元素添加到现有的string[]
,就像您可以将其添加到List<string>
一样。目的根本没有可用的方法。您必须根据当前行参考创建一个新的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();
即使是这样,由于线阵列是计算属性,这涉及大量的幕后不必要的转换的。
如果您知道需要多少行,请使用该许多成员(例如myStringArray)创建一个String数组。 然后使用myListBox。Lines = myStringArray;
Environment.NewLine
或\r\n
的加入对我来说并不适用,最初是用我的文本框。我发现我忘记进入文本框的行为属性,并将“Multiline”属性设置为“True”,以便添加行!我只是认为我会补充这个警告,因为没有人在上面的答案中做过,我曾经认为这个盒子会自动扩展,并且忘记了我需要实际设置Mulitline属性才能工作。我知道这是某种头脑的东西(这是在星期五下午晚些时候发生在我们身上的那种事),但它可能会帮助别人记得检查它。另外,在外观部分中,我需要将“ScrollBars”属性设置为“Both”,以便同时获得水平和垂直条,以便文本可以实际滚动并全部看到。因此,这里的答案不仅仅是通过在.Text
上附加Environment.NewLine
或\r\n
的代码,而且还要确保您的盒子已正确设置并具有正确的属性。
以上方法对我不起作用。我有以下异常:
Exception : 'System.InvalidOperationException' in System.Windows.Forms.dll
原来我需要先请我的控制Invoke
。见答案here。
你不能使用append(Enviroment.NewLine)吗? – jclozano 2011-12-16 16:19:22
TextBox.Lines是文本的只读表示。请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.lines.aspx。 – Casperah 2011-12-16 16:21:30
@Casperah Ohhh,这有助于解释为什么它不能用来做我想做的事情 - 微软(以一种不太微妙的方式)阻止你做一个较慢的代码路径 – 2011-12-16 16:54:32