在尝试显示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();
}
}
只需在类中添加一个字段,然后检查您以前是否参与过类似的代码部分
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