protected override void OnResize(EventArgs e) { base.OnResize(e); scrollBar.Bounds = new Rectangle(this.ClientRectangle.Width - SCROLL_BAR_WIDTH, 1, SCROLL_BAR_WIDTH, this.ClientRectangle.Height - 2); columnWidths.Clear(); float availWidth = (float)(this.scrollBar.Left - fixedColumnWidths.Sum(w => Math.Max(0, w))); for (int i = 0; i < numColumns; i++) { if (fixedColumnWidths[i] > 0) { columnWidths.Add(fixedColumnWidths[i]); } else { columnWidths.Add((int)(columnWidthRatios[i] * availWidth)); } } rowRectangles.Clear(); cellRectangles.Clear(); int height = this.ClientRectangle.Height - (rowHeight * 3 / 4); int width = this.ClientRectangle.Width; int y = 0; while (y < height) { rowRectangles.Add(new Rectangle(0, y, width, rowHeight)); int x = 0; RowCells rc = new QListView <T> .RowCells(); for (int i = 0; i < numColumns; i++) { rc.Add(new Rectangle(x, y, columnWidths[i], rowHeight)); x += columnWidths[i]; } y += rowHeight; cellRectangles.Add(rc); } numVisibleRows = rowRectangles.Count - 1; updateScrollBarMax(); this.Invalidate(); }