Winform中的DataGridView添加行号

最近在研究一些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);
        }


 


 

猜你喜欢

转载自blog.csdn.net/u011353570/article/details/20999093
今日推荐