我正试图在文本框中显示foreach循环的结果。如果它是一个控制台应用程序我可以轻松地做到这一点 Console.WriteLine(" {0}"" {1}"" {2}",serial,state,capital); 但它是一个Windows窗体应用程序,我想在文本框中显示结果。
List<StatesCapital> stacap = new List<StatesCapital>();
stacap.Add(new StatesCapital { sn = 1, st = "Anambra", ca = "Awka" });
stacap.Add(new StatesCapital { sn = 2, st = "Abia", ca = "Umuahia" });
stacap.Add(new StatesCapital { sn = 3, st = "Bauchi", ca = "Bauchi" });
var std = from s in stacap select s;
foreach (var stud in std)
{
//converting the looped to string
string serial = Convert.ToString((stud.sn));
string state = Convert.ToString(stud.st);
string capital = Convert.ToString(stud.ca);
//now to display the results in a textbox
displaystates.Text = ("{0}" "{1}" "{2}", serial, state, capital);
}
答案 0 :(得分:0)
您可以追加文字到TextBox:
displaystates.Text += string.Format("\"{0}\" \"{1}\" \"{2}\" \n", serial, state, capital);
字符串的+=
运算符采用左侧,右侧附加并将新值分配给左侧。
string.Format
也会从Console.WriteLine
调用,并使用其值格式化传递的格式字符串
请注意格式字符串末尾的\n
。这会增加换行符。
输出所有行的另一种(通常更快)方法是使用StringBuilder
。
var sb = new StringBuilder();
//in your loop: add the lines
sb.AppendFormat(("\"{0}\" \"{1}\" \"{2}\" \n", serial, state, capital);
//after your loop: output the result to the TextBox:
displaystates.Text = sb.ToString();
StringBuilder.AppendFormat
执行与string.Format
相同的操作,但将结果添加到StringBuilder
- 实例的换行符,可以通过调用ToString()
将其转换为字符串。
PS:如果你使用C#6,你也应该看看adv12的答案。使用$&#34;&#34;的插值字符串通常比string.Format
或AppendFormat
更具可读性。
答案 1 :(得分:0)
如果你在C#6工作,请尝试这样做:
displaystates.Text = $"{serial} {state} {capital}";
这利用了一个很酷的新字符串功能,即内插字符串。
以旧的方式做到这一点,&#34;试试这个:
displaystates.Text = string.Format("{0} {1} {2}", serial, state, capital);
编辑:我刚刚注意到在foreach循环中执行此操作的部分,这意味着您可能希望TextBox
显示每行的结果,而不仅仅是最近的结果。在这种情况下,请使用+=
作为@Koopakiller建议,并且不要忘记行尾的\r\n
。