A virtual object list view operates in virtual mode, that is, it only gets model objects for a row when it is needed. This gives it the ability to handle very large numbers of rows with minimal resources.

A listview is not a great user interface for a large number of items. But if you've ever wanted to have a list with 10 million items, go ahead, knock yourself out.

Virtual lists can never iterate their contents. That would defeat the whole purpose.

Animated GIFs should not be used in virtual lists. Animated GIFs require some state information to be stored for each animation, but virtual lists specifically do not keep any state information. In any case, you really do not want to keep state information for 10 million animations!

Although it isn't documented, .NET virtual lists cannot have checkboxes. This class codes around this limitation, but you must use the functions provided by ObjectListView: CheckedObjects, CheckObject(), UncheckObject() and their friends. If you use the normal check box properties (CheckedItems or CheckedIndicies), they will throw an exception, since the list is in virtual mode, and .NET "knows" it can't handle checkboxes in virtual mode.

Due to the limits of the underlying Windows control, virtual lists do not trigger ItemCheck/ItemChecked events. Use a CheckStatePutter instead.

To enable grouping, you must provide an implmentation of IVirtualGroups interface, via the GroupingStrategy property.

Similarly, to enable filtering on the list, your VirtualListDataSource must also implement the IFilterableDataSource interface.

Inheritance: ObjectListView
        public log_view_data_source(VirtualObjectListView lv, log_view parent ) : base(lv) {
            lv_ = lv;
            parent_ = parent;
            items_ = parent.filter.matches ;
            change_event_.current_thread_is_owner();

            new Thread(update_filter_thread) {IsBackground = true}.Start();
        }
示例#2
0
 public VirtualListVersion1DataSource(VirtualObjectListView listView)
     : base(listView)
 {
 }
 public InstanceVirtualSource(VirtualObjectListView listView, AddressList addressList, HashSet<ulong> filteredAddresses) : base(listView)
 {
     this.addressList = addressList;
     this.filteredAddresses = filteredAddresses;
 }
示例#4
0
 public AbstractVirtualListDataSource(VirtualObjectListView listView)
 {
     this.listView = listView;
 }
示例#5
0
 public OwnerDataCallbackImpl(VirtualObjectListView olv) {
     this.olv = olv;
 }
示例#6
0
 public static int ClearGroups(VirtualObjectListView virtualObjectListView) {
     return (int)NativeMethods.SendMessage(virtualObjectListView.Handle, LVM_REMOVEALLGROUPS, 0, 0);
 }
示例#7
0
 /// <summary>
 /// Creates an AbstractVirtualListDataSource
 /// </summary>
 /// <param name="listView"></param>
 public AbstractVirtualListDataSource(VirtualObjectListView listView) {
     this.listView = listView;
 }
示例#8
0
 /// <summary>
 /// Creates a VirtualListVersion1DataSource
 /// </summary>
 /// <param name="listView"></param>
 public VirtualListVersion1DataSource(VirtualObjectListView listView)
     : base(listView) {
 }
 public static int ClearGroups(VirtualObjectListView virtualObjectListView)
 {
     return((int)NativeMethods.SendMessage(virtualObjectListView.Handle, LVM_REMOVEALLGROUPS, 0, 0));
 }
示例#10
0
 public OwnerDataCallbackImpl(VirtualObjectListView olv)
 {
     this.olv = olv;
 }
示例#11
0
 public static int ClearGroups(VirtualObjectListView virtualObjectListView)
 {
     return((int)SendMessage(virtualObjectListView.Handle, 0x10a0, 0, 0));
 }
示例#12
0
 public list_data_source(VirtualObjectListView lv)
     : base(lv)
 {
     lv_ = lv;
 }
示例#13
0
 public LineObjectDataSource(VirtualObjectListView objectListview, IStorage<StoredLine> storage)
     : base(objectListview)
 {
     mStorage = storage;
 }