如何在datagrid视图中更改奇数行和偶数行的背景颜色?

时间:2010-12-11 17:30:06

标签: vb.net

我在datagrid视图中有10行... 我使用V S 2010 我怎样才能改变奇数和偶数行的背景颜色。?? 我尽我所能,但我有一个错误: 指数超出范围。必须是非负数且小于集合的大小。参数名称:index

如何在设置所有行背景颜色后设置单列背景颜色

我在表单加载事件上编写代码。 我的代码在vb.net(windows窗体)中如下:

Dim CountR As Integer
   CountR = 0
   While CountR <= DataGridView1.RowCount

       If CountR Mod 2 = 0 Then
                          DataGridView2.Rows(CountR).DefaultCellStyle.BackColor = Color.Pink
       Else
       DataGridView2.Rows(CountR).DefaultCellStyle.BackColor = Color.SkyBlue    

       End If
       CountR = CountR + 1
   End While

5 个答案:

答案 0 :(得分:3)

如果我没弄错的话,我认为只需要改变这条线:

While CountR <= DataGridView1.RowCount

While CountR < DataGridView1.RowCount

换句话说,最高索引比行数少一个。

或许你可以用这样的东西替换你的所有代码(可能是这里的一些错误,从没有IDE的内存中输入):

Dim c as Color = Color.Pink
For Each row As DataGridViewRow In DataGridView1.Rows
    row.DefaultCellStyle.BackColor = c
    c = If(c = Color.Pink, Color.SkyBlue, Color.Pink)
End 

应该做什么:每行改变颜色,使用颜色后,切换到另一行等,直到所有行都被着色。

答案 1 :(得分:3)

for / while是错误的方式!如果你有很多记录,那么你的代码就会很慢。

我认为这是正确的方法:

Dim cs As New System.Windows.Forms.DataGridViewCellStyle
cs.BackColor = Color.Aqua
Me.DataGridView1.AlternatingRowsDefaultCellStyle = cs

答案 2 :(得分:3)

试试这个:

<code>
  For each row in datagridviewrow in datagridview1.rows
  If not row.index / 2 = int(row.index / 2) then row.defaultcellstyle.backcolor = color.{your color choice}
  Next
</code>

这将使你的单色成为可能,而evens保持白色。

答案 3 :(得分:2)

我对vb.net和VS 2008都很陌生,但前几天我读到了关于datagridview并在MSDN中找到了这个article。 datagridview的属性名为AlternatingRowsDefaultCellStyle,它覆盖奇数(或偶数)行的行的背景颜色。它是这样设置的:

dataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGray
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray

我希望这是你正在寻找的东西(如果没有我的道歉......)。

答案 4 :(得分:1)

您可以通过执行以下操作而无需代码即可执行此操作; 1.单击DataGridView 2.在“属性”面板的“外观”下,单击 AlternatingRowDefaultCellStyle 日食 3.将出现一个窗口,您可以在其中对DataGrid进行多项更改 (你要改变的是'BackColor')