1

を使用dataGridViewしており、 CellPainting イベントを使用して行番号を表示virtualModeしようとしましたが、更新の事実により、CellPaintingイベントが. RowPostPaint を見ましたが、これも無限ループで起動しているようです。私がこのコードにいるときに、より効率的なイベントや、CellPaintingイベントのトリガーを無効にする方法はありますか。headerCell.Valueinfinite loop

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

1 に答える 1

0

クラスにフィールドを追加して、このようにコードのその部分に行ったことがあるかどうかを確認するだけです

 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 に設定するだけです

于 2013-08-19T13:51:42.577 に答える