【问题标题】:Odd/Even datagridview rows background color奇数/偶数 datagridview 行背景颜色
【发布时间】:2013-08-21 02:23:18
【问题描述】:

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

我认为必须有更简单的方法来实现这一目标。然后使用例如这部分代码并对其进行修改,以便更改 dtg 行的颜色。如果这段代码的 sn-p 是执行此操作的方法之一,有人可以帮我改进它,这样如果 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;
   }

感谢您的时间和回答。

【问题讨论】:

  • 如果添加/删除行,除非我们必须重新调用该方法,否则此代码将不起作用。
  • @KingKing 我的应用程序没有那么大,所以重新调用它 3 次对我来说并不难。感谢您的评论。

标签: c# .net winforms datagridview


【解决方案1】:

您正在获取异常,因为您正在访问不存在的行。 GridView 行是从零开始的index,这意味着如果您在网格中有十行,则索引将从 0 到 9,并且您应该比行count 少迭代一次。 i &lt;= 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属性设置替代行样式,以保持简单和高效。

【讨论】:

【解决方案2】:

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

【讨论】:

  • 我的 gridview 默认采用备用样式我不想要那种样式如何禁用 AlternatingRowsDefaultCellStyle
【解决方案3】:

你可以使用AlternatingRowsDefaultCellStyle

你也可以手动操作

   foreach (DataGridViewRow row in dataGridView1.Rows)

            if (row.Index % 2==0 )
            {
                row.DefaultCellStyle.BackColor = Color.Red;    
            }

【讨论】:

    【解决方案4】:

    你可以试试这个代码

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

    【讨论】:

      【解决方案5】:
      AlternatingRowStyle-BackColor = "#C5C5C5"
      

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

      <asp:GridView ID="Gridview1" runat="server"
                                       AlternatingRowStyle-BackColor = "#F3F3F3" 
                                      AutoGenerateColumns="true">
      </asp:GridView>
      

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 2011-06-17
        • 2018-12-27
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 1970-01-01
        相关资源
        最近更新 更多