Beispiel #1
0
            protected override void OnPaint(PaintEventArgs e)
            {                
                if (VirtualListSize == 0) return;
                int itemWidth = GetItemWidth();
                int itemHeight = GetItemHeight();
                int pagesize = (ClientSize.Height % itemHeight) == 0 ?
                    (ClientSize.Height / itemHeight) : (ClientSize.Height / itemHeight) + 1;
                int startIndex = GetTopIndex();
                int endIndex = Math.Min(startIndex+pagesize, VirtualListSize);

                Rectangle bound = new Rectangle(0, 0, itemWidth, itemHeight);

                for (int index = startIndex; index < endIndex; index++)
                {
                    var re = new RetrieveCommandListItemEventArgs(index);
                    OnRetrieveCommandListItem(re);
                    re.Item.SetIndex(index);
                    re.Item.SetBounds(bound);
                    var de = new DrawCommandListItemEventArgs(e.Graphics,re.Item);
                    OnDrawItem(de);
                    bound.Y +=itemHeight;
                }
            }
Beispiel #2
0
 private void OnRetrieveCommandListItem(RetrieveCommandListItemEventArgs e)
 {
     RetrieveCommandListItem.Raise(this, e);
 }
Beispiel #3
0
            public CommandListItem GetItemAt(int x, int y)
            {                
                if (y < 0
                    || y >= ClientSize.Height
                    || VirtualListSize == 0)
                    return null;

                int startIndex = GetTopIndex();
                int itemWidth = GetItemWidth();
                int itemHeight = GetItemHeight();                                
                int itemNumber = y / itemHeight;
                int itemIndex = startIndex + itemNumber;
                if (itemIndex >= VirtualListSize) 
                    return null;

                var re = new RetrieveCommandListItemEventArgs(itemIndex);
                OnRetrieveCommandListItem(re);
                re.Item.SetIndex(itemIndex);
                re.Item.SetBounds(new Rectangle(0, itemNumber * itemHeight, itemWidth, itemHeight));
                return re.Item;
            }