ThabetMicrosoft Ответов: 2

Как я могу раскрасить строки в datagridview с условием C#


Привет,

Я хочу с условие : * все строки bool_badge =0 : цвет с красным * все строки bool_badge=1 : Цвет ForestGreen

У меня есть правильный код, но только когда я нажимаю на конкретную ячейку:




Но у меня есть результат только тогда, когда я нажимаю в определенной строке

Но я хочу, когда я выполняю свое приложение, тест начинается, если bool_badge 0 или 1, и у меня есть для всех gridview: color RED или ForestGreen ,


Я пробую этот код:


Но у меня есть ошибка!

в этом линь :
string valeur = dataGridView1[2, i].Value.ToString();


В исключение NullReferenceException не обработано

Ссылка на объект не установлена на экземпляр объекта


Как я могу это исправить?

Большое спасибо,

Что я уже пробовал:

* Код только для определенной строки:
foreach (DataGridViewRow dr in dataGridView1.Rows)
           {
               int row = this.dataGridView1.CurrentCell.RowIndex;
               string valeur = dataGridView1[2, row].Value.ToString();

               if (valeur == "0")
               {
                   dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;
               }
               else
               {
                   dataGridView1.DefaultCellStyle.SelectionBackColor = Color.ForestGreen;
               }
           }



* Мой код попытки:
for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {                
            string valeur = dataGridView1[2, i].Value.ToString();

            if (valeur == "0")
            {
                dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;
            }
            else
            {
                dataGridView1.DefaultCellStyle.SelectionBackColor = Color.ForestGreen;

2 Ответов

Рейтинг:
9

ThabetMicrosoft

Я нахожу код Coreect,

с использовать событие datagridview в Cell_Formatting



private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "bool_badge" && dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null) 
         // if the column is bool_badge and check null value for the extra row at dgv
            {
                    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "0")
                    {
                        dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
                    }
                    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
                    {
                        dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.ForestGreen;
                    }
            }
        }


Рейтинг:
2

OriginalGriff

Справьтесь с Практическое руководство.Событие RowPrePaint (System.Окна.Формы)[^] и сделай это там. Параметр DataGridViewRowPrePaintEventArgs содержит RowIndex, который позволяет вам решить, каким цветом покрасить фон.