Display List in textBox (Winforms)

2019-01-22 08:56发布

Noob question... I'm trying to display a List in a textbox... unfortunately, my code only displays the first element in the 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;
    }

How do I get the textBox to display all of the members? Where is my mistake?

标签: c# list textbox
5条回答
混吃等死
2楼-- · 2019-01-22 09:20

You're doing a foreach, but returning at the first element. This is going to cause it to just display the first element.

Instead, you probably want to do something like:

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

This uses String.Join to "stitch together" the vegetables into a single string, which can then be shown in a TextBox.

查看更多
再贱就再见
3楼-- · 2019-01-22 09:23

Use string.Join():

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

The answer was closer and easier than you thought :)

Note: as mentioned in the comments, this particular function has several overloads added in v4.0 of the .Net framework. If you want to see what is available for earlier versions use the Other Versions dropdown just under the title on the MSDN doco page.

查看更多
来,给爷笑一个
4楼-- · 2019-01-22 09:26

Once you return s.ToString(), the rest of that method stops running.
A method cannot return multiple things.

You probably want to write

someTextBox.Text = String.Join(Environment.NewLine, vegetables);
查看更多
我欲成王,谁敢阻挡
5楼-- · 2019-01-22 09:26

You need to concatenate the strings somehow, like

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

or

public string displayMembers(List<String> vegetables)
{
    return string.Join(Environment.NewLine, vegetables.ToArray());
}
查看更多
干净又极端
6楼-- · 2019-01-22 09:38

Try this:

public string displayMembers(List<String> vegetables)
{
    var text = string.Empty;
    foreach (String s in vegetables)
    {
        text += s.ToString() + "\r\n";
    }
    return text;
}
查看更多
登录 后发表回答