ListViews 使用什么类型的集合来存储它们的数据?
What type of collection do ListViews use to store their data?
我只需要知道列表视图使用哪种集合来存储其数据。我在文档中看到它是一种特殊的集合 (ListViewItemCollection),但是,这是另一种集合的分支还是完全是 ListViews 独有的?
class ListViewItemCollection
定义为 ListView
的内部 class。
签名看起来像这样:
public class ListViewItemCollection : IList, ICollection, IEnumerable
{
...
}
它在内部使用 ListView.ListViewItemCollection.IInnerList
来保存实际元素,并由 ListViewNativeItemCollection
实现。
签名如下:
internal class ListViewNativeItemCollection : ListViewItemCollection.IInnerList
{
...
}
IInnerList
看起来像这样:
internal interface IInnerList
{
int Count { get; }
bool OwnerIsVirtualListView { get; }
bool OwnerIsDesignMode{ get; }
ListViewItem this[int index] { get; set; }
ListViewItem Add(ListViewItem item);
void AddRange(ListViewItem[] items);
void Clear();
bool Contains(ListViewItem item);
void CopyTo(Array dest, int index);
IEnumerator GetEnumerator();
int IndexOf(ListViewItem item);
ListViewItem Insert(int index, ListViewItem item);
void Remove(ListViewItem item);
void RemoveAt(int index);
}
看起来这是泛型之前的所有日子。
我只需要知道列表视图使用哪种集合来存储其数据。我在文档中看到它是一种特殊的集合 (ListViewItemCollection),但是,这是另一种集合的分支还是完全是 ListViews 独有的?
class ListViewItemCollection
定义为 ListView
的内部 class。
签名看起来像这样:
public class ListViewItemCollection : IList, ICollection, IEnumerable
{
...
}
它在内部使用 ListView.ListViewItemCollection.IInnerList
来保存实际元素,并由 ListViewNativeItemCollection
实现。
签名如下:
internal class ListViewNativeItemCollection : ListViewItemCollection.IInnerList
{
...
}
IInnerList
看起来像这样:
internal interface IInnerList
{
int Count { get; }
bool OwnerIsVirtualListView { get; }
bool OwnerIsDesignMode{ get; }
ListViewItem this[int index] { get; set; }
ListViewItem Add(ListViewItem item);
void AddRange(ListViewItem[] items);
void Clear();
bool Contains(ListViewItem item);
void CopyTo(Array dest, int index);
IEnumerator GetEnumerator();
int IndexOf(ListViewItem item);
ListViewItem Insert(int index, ListViewItem item);
void Remove(ListViewItem item);
void RemoveAt(int index);
}
看起来这是泛型之前的所有日子。