0

私はDatagridviewC# デスクトップ アプリケーションを持っています。セルのいずれかが空の場合、それを強調表示するために、その特定のセルの背景をColor.Green

                if (checkString(Convert.ToString(this.UserDataTable.Rows[i].Cells[kk].Value).Trim()) == false)
                {
                    this.UserDataTable.Rows[i].Cells[kk].Style.BackColor = Color.Green;
                    this.MandatoryField_Label.ForeColor = Color.Green;
                    success = false;
                }

ユーザーがセルにデータを入力すると、変更が元に戻ります。それを行う方法についてのアイデア。

私が考えている解決策の1つは、各セルの色を確認してから変更することです。もっと良い方法があると確信しています。

これはうまくいきませんでした:

 this.UserDataTable.DefaultCellStyle.BackColor = Color.White;

ありがとう

4

2 に答える 2

0

CellLeave イベントでセルの内容を確認できます

if(!string.IsNullOrEmpty(((DataGridViewCell)sender).Value))
    ((DataGridViewCell)sender).Style.BackColor = Color.White;
于 2012-11-29T06:58:40.500 に答える
0

おそらく、これを処理する最もクリーンな方法は、次のように CellFormatting イベントを使用することです (必要なコードはこれだけです。他のコードは削除できます)。

dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.Value == null || String.IsNullOrWhiteSpace(e.Value.ToString()))
    {
        e.CellStyle.BackColor = Color.Green;
    }
    else
    {
        e.CellStyle.BackColor = Color.White;
    }            
}
于 2012-11-29T16:08:01.757 に答える