zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#【必备技能篇】DatagridView添加行时,设置行标题单元格的值为行数

c# 设置 添加 必备 技能 标题 单元格 行数
2023-09-11 14:15:48 时间

1、DatagridView添加行的代码

 private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
        {
            dataGridView1.Rows.Add();
        }
    }

2、方法一:【每次添加行都重新刷新了全部的行数,不推荐】

 private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
            }
        }

3、方法二:【只有一个DatagridView时,推荐此方法】

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{          
    dataGridView1.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
}

4、方法三:【通用方法,多个DatagridView都有这个需求时,推荐此方法】

private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    DataGridView dgv = new DataGridView();
    dgv = (DataGridView)sender;
    dgv.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
}

根据下图,有上边的代码:
在这里插入图片描述

1)将多个dataGridView的RowsAdded事件绑定dataGridView_RowsAdded方法

在这里插入图片描述
在这里插入图片描述

2)显示效果:

在这里插入图片描述

5、补充:【如果行标题数字不能显示全,可以更改下边属性】

在这里插入图片描述

6、进一步补充:用绘制的方法来添加行号【了解即可】

1)datagridview绑定事件

this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);

2)对应的方法源码

/// <summary>
/// 给DGV添加行号:当dgv绑定的数据源不断变化时,使用此事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    DgvRowPostPaint(dataGridView1, e);
}

/// <summary>
/// 给DGV添加行号
/// </summary>
/// <param name="dgv"></param>
/// <param name="e"></param>
public static void DgvRowPostPaint(DataGridView dgv, DataGridViewRowPostPaintEventArgs e)
{
    try
    {
        //添加行号 
        SolidBrush v_SolidBrush = new SolidBrush(dgv.RowHeadersDefaultCellStyle.ForeColor);
        int v_LineNo = 0;
        v_LineNo = e.RowIndex + 1;
        string v_Line = v_LineNo.ToString();
        e.Graphics.DrawString(v_Line, e.InheritedRowStyle.Font, v_SolidBrush, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 3);
    }
    catch (Exception ex)
    {
        MessageBox.Show("添加行号时发生错误,错误信息:" + ex.Message, "操作失败");
    }
}