您的位置:首页 > 其它

Winform中的DataGridView添加行号

2014-03-11 11:04 357 查看
最近在研究一些DataGridView的东西,从数据库读取一些数据放到DataGridView上,有一个不方便的地方就是如果数据库中没有自增序号列,那么读取到DataGridView上后就没有相应的自增序号列,所以自己在网上找了个方法,总结了两个:

第一种:自己在DataGridView中添加一个名为“colSeq”的序号列,然后,每次DataGridView中有数据更新就执行如下代码:

/// <summary>

/// 向DataGridView中添加一列自增列

/// </summary>

private void AutoIncrement()

{

for (int i = 0; i < dgvRetailDetail.Rows.Count; i++)

{

dgvRetailDetail.Rows[i].Cells["colSeq"].Value = Convert.ToString(i + 1);

}

}

这种方法直观明了,得到结果如图1。

第二种:在DataGridView的RowPostPaint事件中填写代码。RowPostPaint事件指的是“在所有单元格绘制之后,执行行绘制时候引发的事件”

自己先写了一个封装函数:

public static void ShowRows_DataGridView_RowPostPaint(DataGridView dgv, object sender, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dgv.RowHeadersWidth - 4, e.RowBounds.Height);
TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), dgv.RowHeadersDefaultCellStyle.Font, rectangle, dgv.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}

然后在DataGridView的RowPostPaint事件中调用即可效果如图2:

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
ShowRows_DataGridView_RowPostPaint(this.dataGridView1,sender,e);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: