在textBox(Winforms)中显示列表<string> </string>

时间:2011-11-20 19:31:56

标签: c# list textbox

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显示所有成员?我的错误在哪里?

5 个答案:

答案 0 :(得分:28)

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

你可能想写

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

答案 1 :(得分:6)

使用string.Join()

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