Заполнение текстового поля содержимым Arraylist c # - PullRequest
0 голосов
/ 30 ноября 2011

У меня неприятная проблема. С помощью следующего кода в моем clsExchange, который вызывается в моем FormExchange с простым txtPhonesInSystem.Text = ClsExchange.listPhones();, я могу отображать только первую запись массива.

 public string listPhones()
    {
        string strphone = string.Empty;

        foreach (clsPhone phone in phoneArray)
        {

            strphone = (strphone + phone.PhoneNumber.ToString() + "\n");
            return strphone;


        }
        return strphone;
    }

Однако, если я беру логику и вставляю в событие btn_press в form.cs, он отображает все содержимое. Единственное отличие, которое я вижу, это то, что вместо возврата strphone я использую txtbox.Text = strphone. Любые предложения очень ценятся. Я был на этом весь день.

EDIT Спасибо всем за ваши ответы. Я новый, это должно быть что-то так просто. Я думаю, что мой мозг не подходит для этого материала. Позор, потому что я люблю это.

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Эта строка внутри foreach - это проблема:

return strphone;

Вы выходите из первой записи.

Кстати, это все еще C # 1.0?Если нет, то почему вы используете ArrayLists?

1 голос
/ 30 ноября 2011

Вы вызываете return в цикле foreach, который вынуждает завершить весь метод в первом цикле цикла, поэтому strphone содержит только первый номер фома.

Если вы используете .NET 3, вы можете упростить решение, используя один запрос LINQ:

txtPhonesInSystem.Text = 
          phoneArray.Select(p => p.PhoneNumber)
                    .Aggregate((acc, next) => acc + "\n" + next);

в противном случае просто удалите return strphone; строку кода.

Также имеет смысл использовать Environment.NewLine вместо жестко заданного значения "\n".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...