1

少しの間、datagridviews をいじっていて、質問が出てきました。-> CellFormatting イベントからセルの背景の作業を変更しません。私はこれを試しました:

private void dataGridView1_CellFormatting(object sender, dataGridViewCellFormattingEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name.Equals(dnsList.First<String>()))
    {
        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
        DataGridViewCell cell = row.Cells[e.ColumnIndex];
        cell.Style.BackColor = Color.FromArgb(194, 235, 211);
    }
}

これは完全に機能しますが、これは次のとおりです。

private void ApplyColoring()
{
    if (dataGridView1.DataSource != null)
    {
        foreach (DataGridViewRow dataGridRow in dataGridView1.Rows)
        {
            DataGridViewCell cell = dataGridRow.Cells[dnsList.First<String>()];
            cell.Style.BackColor = Color.FromArgb(194, 235, 211);
        }
    }
}

デバッグは、すべてが健全で、null 参照またはその他の例外に適していることを示しています...ヒントはありますか?

4

2 に答える 2

1

セルの値をフォーマットすることを目的としたCellPainting、ではなく、イベントで色付けを実行する必要がありますCellFormatting

于 2010-01-08T14:01:52.387 に答える
0

グリッドのDataBindingCompleteイベントからメソッドを呼び出すことをお勧めします。BackgroundWorkerからの呼び出しはおそらく時期尚早であり、DataGridView.Rowsはまだ初期化されていません。


private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
      ApplyColoring();
}

于 2010-01-08T13:36:54.857 に答える