在textBox(Winforms)中显示列表

Noob问题……我正在尝试在文本框中显示List …不幸的是,我的代码只显示列表中的第一个元素…

private void Form1_Load(object sender, EventArgs e) { List vegetables = new List(); vegetables.Add("tomato"); vegetables.Add("carrot"); vegetables.Add("celery"); vegetables.Add("potato"); textBox1.Text = displayMembers(vegetables); } public string displayMembers(List vegetables) { foreach (String s in vegetables) { return s.ToString(); } return null; } 

如何让textBox显示所有成员? 我的错误在哪里?

一旦你return s.ToString() ,该方法的其余部分就会停止运行。
一个方法不能返回多个东西。

你可能想写

 someTextBox.Text = String.Join(Environment.NewLine, vegetables); 

使用string.Join() :

 textbox1.Text = string.Join(" ", vegetables); 

答案比你想象的更接近和更容易:)

注意:如评论中所述,此特定函数在.Net框架的v4.0中添加了几个重载。 如果要查看早期版本的可用内容,请使用MSDN doco页面标题下的“ Other Versions下拉列表。

你需要以某种方式连接字符串,比如

 public string displayMembers(List vegetables) { return string.Join(", ", vegetables.ToArray()); } 

要么

 public string displayMembers(List vegetables) { return string.Join(Environment.NewLine, vegetables.ToArray()); } 

你正在做一个foreach,但回到第一个元素。 这将导致它只显示第一个元素。

相反,你可能想做类似的事情:

 public string DisplayMembers(IEnumerable vegetables) { return String.Join(", ", vegetables); } 

这使用String.Join将蔬菜“拼接”成一个单独的字符串,然后可以在TextBox中显示。

试试这个:

 public string displayMembers(List vegetables) { var text = string.Empty; foreach (String s in vegetables) { text += s.ToString() + "\r\n"; } return text; }