16

我有datagridview,现在我想根据行号是偶数还是奇数来更改每行的背景颜色。

我认为必须有更简单的方法来实现这一点。然后使用例如这部分代码并对其进行修改,以便更改 dtg 行的颜色。如果这段代码是执行此操作的方法之一,那么有人可以帮我改进它,以便在 rabge 时索引不存在时不会引发异常?

public void bg_dtg()
    {
        try
        {

            for (int i = 0; i <= dataGridView1.Rows.Count ; i++)
            {
                if (IsOdd(i))
                {

                    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.LightBlue;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(""+ex);
        }
    }

   public static bool IsOdd(int value)
   {
       return value % 2 != 0;
   }

感谢您的时间和回答。

4

5 回答 5

28

表单设计器中有一个DataGridView备用行视图样式选项。AlternatingRowsDefaultCellStyle在属性网格中

于 2013-08-19T10:15:55.650 回答
6

您正在获取异常,因为您正在访问不存在的行。GridView 行是从零开始的index,这意味着如果您在网格中有十行,则索引将从 0 到 9 并且您应该比行少一个迭代count。将i <= dataGridView1.Rows.Count在最后一次迭代中给出异常,因为当计数为 10(总行数为 10)并且 dataGridView1.Rows[10] 不存在时,因此引发异常。

将循环条件中的 <=更改为 <

for (int i = 0; i <= dataGridView1.Rows.Count ; i++)

for (int i = 0; i < dataGridView1.Rows.Count ; i++)

您应该使用AlternatingRowsDefaultCellStyle属性来设置替代行样式以保持简单和高效。

于 2013-08-19T10:12:57.437 回答
5

你可以试试这段代码

 for (int i = 0; i < GridView1.Rows.Count; i++) {

     if (i % 2 == 0) {
       GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Green;
       GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Green;
     }
     else {
       GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Red;
       GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Red;
     }
}
于 2015-01-28T05:43:14.960 回答
4

您可以使用AlternatingRowsDefaultCellStyle

或者

你也可以手动完成

   foreach (DataGridViewRow row in dataGridView1.Rows)

            if (row.Index % 2==0 )
            {
                row.DefaultCellStyle.BackColor = Color.Red;    
            }
于 2013-08-19T10:29:55.633 回答
4
AlternatingRowStyle-BackColor = "#C5C5C5"

我们可以直接在ASP网格中添加代码

<asp:GridView ID="Gridview1" runat="server"
                                 AlternatingRowStyle-BackColor = "#F3F3F3" 
                                AutoGenerateColumns="true">
</asp:GridView>
于 2018-02-16T10:13:05.723 回答