如何将列表的内容放在单个MessageBox中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将列表的内容放在单个MessageBox中?相关的知识,希望对你有一定的参考价值。
基本上,我有一个包含多个项目的列表,我想要一个消息框来显示它们。
我最接近的是每个项目的消息框(使用foreach
)。
我想要的是相当于:
MessageBox.Show ("List contains:"+
Foreach (string str in list)
{ str + Environment.Newline + }
)
但显然这不起作用!这样做的正确方法是什么?
答案
您可以使用string.Join
将所有内容连接到一个字符串中:
var message = string.Join(Environment.NewLine, list);
MessageBox.Show(message);
但是,如果您无法访问.NET 4,则不会出现需要IEnumerable<string>
的重载。你将不得不回到takes an array:
var message = string.Join(Environment.NewLine, list.ToArray());
MessageBox.Show(message);
另一答案
如果你有.Net 4.0
string s = String.Join(",", list);
如果你没有,但有3.5
string s = String.Join(",", list.ToArray());
另一答案
您还可以使用Stringbuilder:
StringBuilder builder = new StringBuilder();
foreach(string str in list)
{
builder.Append(str.ToString()).AppendLine();
}
Messagebox.Show(builder.ToString());
问候
另一答案
只是为了好玩,如果你需要用非字符串集合做一次这样的事情 - 使用Aggregate
的LINQ版本,它最接近你的示例语法。不要在这里使用它,确实在这种情况下使用String.Join
,但请记住,你在LINQ中有一些可以做你需要的东西。
MessageBox.Show("List contains: " +
list.Aggregate((str,val) => str + Environment.NewLine + val);
编辑:同样,像Martinho Fernandes指出的那样,在这种情况下使用StringBuilder
类更好,所以:
MessageBox.Show("List contains: " + list.Aggregate(new StringBuilder(),
(sb,val) => sb.AppendLine(val),
sb => sb.ToString()));
另一答案
只需要制作一个for循环,例如:
string total ="";
for(int i =0; i<x.count ;i++)
{
total =total+x[i] +"\n";
}
MessageBox.Show(total);
以上是关于如何将列表的内容放在单个MessageBox中?的主要内容,如果未能解决你的问题,请参考以下文章