如何使用条件C#

时间:2016-11-02 11:04:31

标签: c# datagridview colors row

我想要一个条件:

  • 所有行都有bool_badge =0:颜色为 RED
  • 所有行都有bool_badge=1:颜色与 ForestGreen

我有一个代码正确但是当我点击特定单元格

我的代码:

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;
            }
        }

结果: 1)enter image description here`

2)enter image description here

但我希望当我执行我的应用程序时,如果bool_badge为0或1,则测试开始,并且我拥有所有gridview:color RED或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;
            }
        }

但我有错误!

这是:

enter image description here

我该如何解决?

非常感谢,

3 个答案:

答案 0 :(得分:0)

您应该使用.Rows和.Cells属性。

string valeur = dataGridView1.Rows[i].Cells[2].Value.ToString();

答案 1 :(得分:0)

您可以使用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;
                    }
            }
        }

结果将是,

enter image description here

希望有所帮助,

答案 2 :(得分:0)

为了帮助你调试,不要做Value.ToString();刚

 var value = dataGridView_XXX.Rows[rowNumber].Cells[i].value;

并且

if (value == null) display your row/column index
else dataGridView_XXX.Rows[rowNumber].DefaultCellStyle.BackColor = xxx;