private int LastVisibleItem ()
{
Rectangle item_rect;
int top_y = items_area.Y + items_area.Height;
int i = 0;
if (top_index >= Items.Count)
return top_index;
for (i = top_index; i < Items.Count; i++) {
item_rect = GetItemDisplayRectangle (i, top_index);
if (MultiColumn) {
if (item_rect.X > items_area.Width)
return i - 1;
} else {
if (item_rect.Y + item_rect.Height > top_y)
return i;
}
}
return i - 1;
}