изменить задний цвет в сетке данных - PullRequest
0 голосов
/ 15 января 2012

Я пытался изменить задний цвет в определенном столбце при изменении значения ячейки. Я не нашел способ сделать это, и я не знаю, как это сделать.

ок ----> фоновый цвет зелёный.
nok ----> красный цвет фона.

Большое спасибо за вашу помощь.

private void timer2_Tick(object sender, EventArgs e)
{
    int count = 0;
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        String StartCourse = dr[0].ToString();
        string EndCourse = dr[1].ToString();
        DateTime SystemTime = Convert.ToDateTime(DateTime.Now);
        DateTime StartTime = Convert.ToDateTime(StartCourse);
        DateTime EndTime = Convert.ToDateTime(EndCourse);

        if (StartTime.TimeOfDay.Ticks <= SystemTime.TimeOfDay.Ticks && SystemTime.TimeOfDay.Ticks < EndTime.TimeOfDay.Ticks)
            {
                 ds.Tables[0].Rows[count][5] = "ok";      
            }

        else
            {
                ds.Tables[0].Rows[count][5] = "nok";
            }

        count++;
        dataGridView1.DataSource = ds.Tables[0];

    }
}

Ответы [ 4 ]

1 голос
/ 15 января 2012

Вы можете вызвать эту процедуру:

ОБНОВЛЕНО

void ColorGrid()
{
     foreach (DataGridViewRow row in dataGridView1.Rows) 
     {
        if (row.Cells[5].Value.ToString() == "ok") 
        {
            row.DefaultCellStyle.BackColor = Color.Green; 
        }
        else
        {
            row.DefaultCellStyle.BackColor = Color.Red; 
        }
     }
}
1 голос
/ 15 января 2012

См. Свойство DataGridViewColumn.DefaultCellStyle .Это позволяет вам установить DataGridViewCellStyle для столбца.Этот класс имеет свойство BackColor .

Подробнее см. В следующей статье MSDN:

Стили ячеек в элементе управления Windows Forms DataGridView

0 голосов
/ 13 ноября 2015

Я делаю это на своем собственном проекте.

 foreach (DataGridViewRow row in this.dataGridView1.Rows)
 {

     row.DefaultCellStyle.BackColor = (row.Cells[5].Text == "ok")? Color.Green:Color.Red;
 }

Если это по-прежнему не работает, попробуйте удалить это представление данных и добавить его снова. Обязательно назовите его снова как dataGridView1 и приложите к нему соответствующие события.

0 голосов
/ 15 января 2012

Попробуйте это:

 foreach (DataGridViewRow row in this.DataGridView1.Rows)
        {
            if (row.Cells[5].Text == "ok")
            {
                row.DefaultCellStyle.BackColor = Color.Green;
            }
            else
            {
                row.DefaultCellStyle.BackColor = Color.Red;
            }
        }

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...