![]() 如上图示,当行数不够时,DataGridView下部分是一块空白区域,不怎么美观,就想用网格来填充。最后的思路是手工绘制线条来完成,只要能找着下图几个红色位置的坐标,其他就好办了: ![]() 最终效果: ![]() 实现代码: 程序代码/// <summary> (责任编辑:admin)/// 绘制网格填充空白区域 /// </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); } } } } } } } |



程序代码




骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价