protected int? IndexFromPoint(Point pt) { foreach (var vi in VisibleItems) if ((pt.Y >= vi.Y1) && (pt.Y <= vi.Y2)) return vi.Index; return null; }