zoukankan      html  css  js  c++  java
  • 如何让 dataGridView 的空白区域自动用网格填充

    DataGridView 空数据像Excel空网格一样(DataGridView Excel like empty grid)

    class GridLineDataGridView : DataGridView
        {
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
     
                int rowHeight = this.RowTemplate.Height;
     
                int h = this.ColumnHeadersHeight + rowHeight * this.RowCount ;
                int imgWidth = this.Width - 2;
                Rectangle rFrame = new Rectangle(0, 0, imgWidth, rowHeight);
                Rectangle rFill = new Rectangle(1, 1, imgWidth - 2, rowHeight);
                Rectangle rowHeader = new Rectangle(2, 2, this.RowHeadersWidth - 3, rowHeight);
     
                Pen pen = new Pen(this.GridColor, 1);
     
                Bitmap rowImg = new Bitmap(imgWidth, rowHeight);
                Graphics g = Graphics.FromImage(rowImg);
                g.DrawRectangle(pen, rFrame);
                g.FillRectangle(new SolidBrush(this.DefaultCellStyle.BackColor), rFill);
                g.FillRectangle(new SolidBrush(this.RowHeadersDefaultCellStyle.BackColor), rowHeader);
     
                Bitmap rowImgAAlternative = rowImg.Clone() as Bitmap;
                Graphics g2 = Graphics.FromImage(rowImgAAlternative);
                rFill.X += this.RowHeadersWidth - 1;
                g2.FillRectangle(new SolidBrush(this.AlternatingRowsDefaultCellStyle.BackColor), rFill);
     
                int w = this.RowHeadersWidth - 1;
                for (int j = 0; j < this.ColumnCount; j++)
                {
                    g.DrawLine(pen, new Point(w, 0), new Point(w, rowHeight));
                    g2.DrawLine(pen, new Point(w, 0), new Point(w, rowHeight));
                    w += this.Columns[j].Width;
                }
     
                int loop = (this.Height - h) / rowHeight;
                for (int j = 0; j < loop + 1; j++)
                {
                    int index = this.RowCount + j;
                    if (index % 2 == 0)
                    {
                        e.Graphics.DrawImage(rowImg, 1, h + j * rowHeight);
                    }
                    else
                    {
                        e.Graphics.DrawImage(rowImgAAlternative, 1, h + j * rowHeight);
                    }
                }
            }
        }

    转 : https://www.it1352.com/1336145.html

  • 相关阅读:
    区域赛系列一多边形划分(卡特兰数)
    Going Home(最大匹配km算法)
    奔小康赚大钱(km)
    Air Raid(最小路径覆盖)
    Save Princess(丑数)
    Asteroids(最小点覆盖)
    Windows命令行命令总结
    SPI协议详解
    Python实现串口通信(pyserial)
    python中进制转换
  • 原文地址:https://www.cnblogs.com/fps2tao/p/14781449.html
Copyright © 2011-2022 走看看