Пример #1
0
        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();
        }