DataGridView空白区域用网格填充示例



如上图示,当行数不够时,DataGridView下部分是一块空白区域,不怎么美观,就想用网格来填充。最后的思路是手工绘制线条来完成,只要能找着下图几个红色位置的坐标,其他就好办了:



最终效果:



实现代码:

/// <summary>
/// 绘制网格填充空白区域
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    DataGridView myDataGridView = (DataGridView)sender;

    if (myDataGridView.Rows.Count > 0)
    {
        int i = myDataGridView.ColumnHeadersHeight;//标题行高
        int j = myDataGridView.Rows.GetRowsHeight(DataGridViewElementStates.Visible); //所有可见行总高
        int k = myDataGridView.Height; //控件高度
        int l = myDataGridView.Rows.GetLastRow(DataGridViewElementStates.Visible);//最后一行索引
        int count = myDataGridView.Columns.Count;//列总数
        int width = 0;

        //当网格未充满控件时才画线
        if (i + j < k)
        {
            using (Brush gridBrush = new SolidBrush(myDataGridView.GridColor))
            {
                using (Pen gridLinePen = new Pen(gridBrush))
                {
                    //处理标题列
                    if (myDataGridView.RowHeadersVisible)
                    {
                        width = myDataGridView.RowHeadersWidth;
                        e.Graphics.DrawLine(gridLinePen, width, i + j, width, k);
                    }
                    else
                    {
                        width = 1;
                    }

                    //处理正常列
                    for (int index = 0; index < count; index++)
                    {
                        if (myDataGridView.Columns[index].Visible)
                        {
                            width += myDataGridView.Columns[index].Width;

                            e.Graphics.DrawLine(gridLinePen, width, i + j, width, k);
                        }
                    }
                }
            }
        }
    }
}


评论: 1 | 引用: 0 | 查看次数: 10653
wbpls1[2012-05-22 11:43 AM | | | 117.89.121.252 | del | 回复回复]
沙发
下面的竖线会被擦除,该怎么修改
回复来自 dnawo dnawo 回复 [2012-05-23 09:12 AM]
抱歉,很久没弄这个了:)
发表评论
登录后再发表评论!