在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; }