の列の値に基づいて、行がフォントの色ベースを自動更新する方法を尋ねたいと思いますdataGridView
。
たとえば、テーブルには次の 4 つの列がありますid, name, rentPayMent and check
。
各行をチェックして、次の値のいずれかがあるかどうかを確認します。Yes のcheck == 0
場合、この行のフォントcolor = red
Elsedo nothing
移動時に、次のようにコードを使用しますが、エラーが発生します
オブジェクト参照がオブジェクトのインスタンスに設定されていません。System.NullReferenceException が処理されませんでした
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[3].Value.ToString() == "0") //**Object reference not set to an instance of an object**
{
row.DefaultCellStyle.BackColor = Color.Red; //then change row color to red
}
}
}
すべてのおかげで、私はすでに解決策を得ました。
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells[3].Value != null && !string.IsNullOrWhiteSpace(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString()))
{
if (dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString().Trim() == "0")
dataGridView1.Rows[e.RowIndex].DefaultCellStyle = new DataGridViewCellStyle { ForeColor = Color.Red };
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[3].Style = dataGridView1.DefaultCellStyle;
}
}