Изменение стиля определенных ячеек в DataGridView - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь изменить цвет определенных ячеек в DataGridView в зависимости от того, является ли значение таким же, как и в других ячейках.К сожалению, это не работает.Это код, который, я думал, должен работать:

for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
    for (int j = 1; j < 8; j++)
        for (int k = 8; k < 20; k++)
            if (dataGridView2.Rows[i].Cells[j].Value == dataGridView2.Rows[i].Cells[k].Value)
                dataGridView2.Rows[i].Cells[j].Style.BackColor = Color.Green;
}
dataGridView2.Refresh();

Все столбцы создаются с помощью typeof (int), поэтому это не должно быть проблемой типа.Также отладка показала, что моя программа вводит условие if, но все равно не отображает изменения.

Заранее спасибо за любую помощь.

1 Ответ

1 голос
/ 10 марта 2011

Я делаю это в одном из приложений, над которым я работаю.Насколько я понимаю, лучший способ сделать это - переопределить событие DataGridView.CellFormatting.

В моем приложении есть четыре логических свойства в каждой строке источника данных, я хочу добавить цветную рамкудля каждого из свойств это верно.

    void uxGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        try
        {
             var item = uxGrid.Rows[e.RowIndex].DataBoundItem as NiftyThing;
             if(item != null)
             {
                 if(item.Property1)
                 {
                     e.CellStyle.SelectedBackColor = e.CellStyle.BackColor = Color.Red;
                     //Don't display 'True' or 'False'
                     e.Value = string.Empty;
                 }
                 else if(item.Property2)
                 ...
             }      
        }
        catch { }
    }

Надеюсь, это поможет!

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