Noob问题...我正在尝试在文本框中显示List ...不幸的是,我的代码只显示列表中的第一个元素...
private void Form1_Load(object sender, EventArgs e)
{
List<String> vegetables = new List<String>();
vegetables.Add("tomato");
vegetables.Add("carrot");
vegetables.Add("celery");
vegetables.Add("potato");
textBox1.Text = displayMembers(vegetables);
}
public string displayMembers(List<String> vegetables)
{
foreach (String s in vegetables)
{
return s.ToString();
}
return null;
}
如何让textBox显示所有成员?我的错误在哪里?
答案 0 :(得分:28)
一旦return s.ToString()
,该方法的其余部分就会停止运行
方法不能返回多个东西。
你可能想写
someTextBox.Text = String.Join(Environment.NewLine, vegetables);
答案 1 :(得分:6)
textbox1.Text = string.Join(" ", vegetables);
答案比你想象的更接近,更容易:)
注意:如评论中所述,此特定函数在.Net框架的v4.0中添加了几个重载。如果您想查看早期版本的可用内容,请使用MSDN doco页面标题下的Other Versions
下拉列表。
答案 2 :(得分:2)
你需要以某种方式连接字符串,比如
public string displayMembers(List<String> vegetables)
{
return string.Join(", ", vegetables.ToArray());
}
或
public string displayMembers(List<String> vegetables)
{
return string.Join(Environment.NewLine, vegetables.ToArray());
}
答案 3 :(得分:0)
你正在做一个foreach,但回到第一个元素。这将导致它只显示第一个元素。
相反,您可能希望执行以下操作:
public string DisplayMembers(IEnumerable<String> vegetables)
{
return String.Join(", ", vegetables);
}
这使用String.Join将蔬菜“拼接”成一个字符串,然后可以在TextBox中显示。
答案 4 :(得分:0)
试试这个:
public string displayMembers(List<String> vegetables)
{
var text = string.Empty;
foreach (String s in vegetables)
{
text += s.ToString() + "\r\n";
}
return text;
}