使用Arraylist c#的内容填充文本框

时间:2011-11-30 17:23:08

标签: c# arrays winforms

我有一个令人沮丧的问题。使用我的FormExchange中调用的clsExchange中的以下代码,只需txtPhonesInSystem.Text = ClsExchange.listPhones();,我只能显示第一个arraylist条目。

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

        foreach (clsPhone phone in phoneArray)
        {

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


        }
        return strphone;
    }

但是,如果我接受逻辑并放入form.cs上的btn_press事件,它会显示完整的内容。我能看到的唯一区别是使用txtbox.Text = strphone而不是返回strphone。任何建议都非常感谢我一整天都在这里。

修改 谢谢大家的答案。我不知道它必须是那么简单的东西。我想我的大脑不适合这些东西。很遗憾因为我喜欢它。

2 个答案:

答案 0 :(得分:2)

foreach内的这一行是问题所在:

return strphone;

你正在放弃第一张唱片。

顺便说一下,这还是C#1.0吗?如果没有,为什么使用ArrayLists

答案 1 :(得分:1)

你在foreach循环中调用return强制在第一个循环周期退出整个方法,因此strphone只包含第一个phome编号。

如果您使用的是.NET 3,则可以使用单个LINQ查询简化解决方案:

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

否则只需删除return strphone;代码行。

使用Environment.NewLine代替硬编码"\n"值也是有意义的。