在尝试显示datagridview c#的行号时,我应该连接的最有效的事件是什么

本文关键字:我应该 连接 是什么 事件 有效 显示 datagridview | 更新日期: 2023-09-27 18:28:07

我在virtualMode中使用dataGridView,并尝试使用CellPainting事件来显示行号,但更新headerCell.Value的事实导致CellPainting事件在infinite loop中继续激发。我看了RowPostPaint,但它似乎也在一个无限循环中激发。当我在这个代码中时,有没有更有效的事件,或者可能有一种方法可以禁用CellPainting事件的触发。

void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
  {
    if (e.ColumnIndex == -1 && e.RowIndex > -1)
    {
      dataGridView1.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
    }
  }

在尝试显示datagridview c#的行号时,我应该连接的最有效的事件是什么

只需在类中添加一个字段,然后检查您以前是否参与过类似的代码部分

 void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        if(this.theRowCountWasPainted) return;
        if (e.ColumnIndex == -1 && e.RowIndex > -1)
        {
            dataGridView1.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
            this.theRowCountWasPainted = true;
        }
    }

每当您需要再次重新绘制时,只需将this.theRowCountWasPainted设置为false