欢迎光临

木子屋

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

作者: dnawo

日期: 2009-10-23 11:09 AM

分类: Win编程

内容:
如上图示，当行数不够时，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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.859 ms

返回

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

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.859 ms

返回

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

评论内容:

== wbpls1 2012-05-22 11:43 AM ----

下面的竖线会被擦除，该怎么修改
dnawo 回复 [2012-05-23 09:12 AM] 抱歉，很久没弄这个了:)

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.914 ms

返回