пятница, 17 сентября 2010 г.

Как в C# datagridview выделить ячейку цветом и другим шрифтом

Вводная: Есть dataGridView с некоторыми данными. Задача: если некоторый параметр изменяется с нормального, то выделить ячейку

private void DGPaint()
        {          
            int i = 0;
            int j = 0;
            for (i = 0; i < dataGridView1.ColumnCount; i++)
            {
                for (j = 0; j < dataGridView1.RowCount; j++)
                {
                    if (dataGridView1.Rows[j].Cells[i].Value.ToString() == "Bad")
                    {
                        //Меняем цвет ячейки
                        dataGridView1.Rows[j].Cells[i].Style.BackColor = Color.Red;
                        dataGridView1.Rows[j].Cells[i].Style.ForeColor = Color.Black;
                        //Меняем шрифт ячейки
                        dataGridView1.Rows[j].Cells[i].Style.Font = new Font(this.Font, FontStyle.Bold);                                    
                    }
                }
            }
        }




UPD: Ещё вариант предложенный Владимир Палычем (http://turbowarp.blogspot.com/)

private void DGPaint()
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.Cells[1].Value.ToString()=="Bad")
        foreach (DataGridViewCell cell in row.Cells)
        {
            //Меняем цвет ячейки
            cell.Style.BackColor = Color.Red;
            cell.Style.ForeColor = Color.Black;
            //Меняем шрифт ячейки
            cell.Style.Font = new Font(this.Font, FontStyle.Bold);
        }
    }
}

3 комментария:

  1. Как то не по сишарповски )) чем foreach не подошел?

    ОтветитьУдалить
  2. Так будет гораздо быстрее работать:

    private void DGPaint()
    {
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (row.Cells[1].Value.ToString()!="Success")
    foreach (DataGridViewCell cell in row.Cells)
    {
    //Меняем цвет ячейки
    cell.Style.BackColor = Color.Red;
    cell.Style.ForeColor = Color.Black;
    //Меняем шрифт ячейки
    cell.Style.Font = new Font(this.Font, FontStyle.Bold);
    }
    }
    }

    ОтветитьУдалить
  3. Код изначально был для того, чтобы можно было отдельную ячейку выделить. Ну и поиск также.

    ОтветитьУдалить