使用循环来获取ListView中的每个项目?

Ibr*_*taz 5 c# listview loops winforms

使用循环获取多个列的ListView中的每个项目的有效方法是什么?

经过一段时间的挖掘,我找不到任何东西,所以当我找到一些我想在这里分享它的东西时,看看人们是否有更好的方法.还有点像抢占一个必然会出现的问题,因为我有点想着怎么办?eerrrr ....我?

我喜欢这个网站,所以我想分享我对上述问题的解决方案.我知道倒退,但我知道它会帮助某人在某个地方.=)

    private ArrayList getItemsFromListViewControl()
    {                      
        ArrayList lviItemsArrayList = new ArrayList();

        foreach (ListViewItem itemRow in this.loggerlistView.Items)
        {
            //lviItemsArrayList.Add(itemRow.Text); <-- Already included in SubItems so ... = )

            for (int i = 0; i < itemRow.SubItems.Count; i++)
            {
                lviItemsArrayList.Add(itemRow.SubItems[i].Text);
                // Do something useful here, for example the line above.
            }
        }
        return lviItemsArrayList;
    }
Run Code Online (Sandbox Code Playgroud)

这将返回一个基于线性数组的表示,该表示属于ArrayList集合对象中的目标ListView控件的所有项.

mrt*_*ndi 6

我建议使用IEnumerable作为方法的返回类型,并使用"yield return"返回每个子项.

private IEnumerable<ListViewSubItem> GetItemsFromListViewControl()
{                      
    foreach (ListViewItem itemRow in this.loggerlistView.Items)
    {            
        for (int i = 0; i < itemRow.SubItems.Count; i++)
        {
            yield return itemRow.SubItems[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然如果您使用的是.NET 3.5,我建议也使用LINQ.