Используя циклы для достигания каждого объекта в ListView?

BinaryReader b = new BinaryReader(file.InputStream);
byte[] binData = b.ReadBytes(file.InputStream.Length);

строка 2 должна быть заменена

byte[] binData = b.ReadBytes(file.ContentLength);
5
задан Peter Mortensen 12 October 2009 в 11:29
поделиться

4 ответа

I suggest using IEnumerable as the return type of the method and using "yield return" to return each subitems.

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]);
        }
    }
}

although if you are using .NET 3.5 I suggest using LINQ too.

6
ответ дан 14 December 2019 в 01:12
поделиться
    foreach (ListViewItem itemRow in this.ListView.Items)
    {            
        for (int i = 0; i < itemRow.SubItems.Count; i++)
        {
            // Do something useful here !
            // e.g 'itemRow.SubItems[count]' <-- Should give you direct access to
            // the item located at co-ordinates(0,0). Once you got it, do something 
            // with it.
        }
    }

Это мой способ сделать это.

4
ответ дан 14 December 2019 в 01:12
поделиться

Если вы есть .NET 3.5, другой и более простой способ ИМО сделать то, что вы показываете выше:

  var qry = from i in listView1.Items.Cast<ListViewItem>()
            from si in i.SubItems.Cast<System.Windows.Forms.ListViewItem.ListViewSubItem>()
            select si.Text;
0
ответ дан 14 December 2019 в 01:12
поделиться

У меня нет времени проверять это с помощью кода, но, возможно, вы могли бы инициализировать список массивов коллекцией, возвращаемой одним из методов listview? Я проверю это, когда вернусь домой, и прокомментирую, если на вопрос не ответят до этого.

РЕДАКТИРОВАТЬ: Я провел очень быструю проверку, и он скомпилировал, запустил и инициализировал arraylist с одним элементом, который я вставил listview.

ArrayList lviItemsArrayList = new ArrayList(loggerlistView.Items.ToList());

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

РЕДАКТИРОВАТЬ № 2:

loggerlistView.Items имеет тип «System.Collections.Generic.IList» и имеет метод под названием «ToList», как описано здесь ].

Попробуйте добавить ссылку на Linq? До сих пор я не осознавал, что это было специфично для .NET 3.5 - извините за путаницу.

using System.Linq;
-1
ответ дан 14 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: