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; } }
private void OnRetrieveCommandListItem(RetrieveCommandListItemEventArgs e) { RetrieveCommandListItem.Raise(this, e); }
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; }