Подтвердить что ты не робот

Список отображения <String> в текстовом поле (Winforms)

Noob question... Я пытаюсь отобразить 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;
    }

Как мне получить текстовое поле для отображения всех участников? Где моя ошибка?

4b9b3361

Ответ 1

Как только вы return s.ToString(), остальная часть этого метода перестанет работать.
Метод не может возвращать несколько вещей.

Вероятно, вы хотите написать

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

Ответ 2

Используйте string.Join():

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

Ответ был ближе и проще, чем вы думали:)

Примечание:, как указано в комментариях, эта конкретная функция имеет несколько перегрузок, добавленных в v4.0.Net framework. Если вы хотите посмотреть, что доступно для более ранних версий, используйте раскрывающийся список Other Versions прямо под заголовком на странице doco MSDN.

Ответ 3

Вам нужно каким-то образом связать строки, например

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

или

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

Ответ 4

Вы делаете foreach, но возвращаетесь к первому элементу. Это приведет к простому отображению первого элемента.

Вместо этого вы, вероятно, захотите сделать что-то вроде:

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

Это использует String.Join, чтобы "сшить вместе" овощи в одну строку, которая затем может быть показана в TextBox.

Ответ 5

Попробуйте следующее:

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