我在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
答案 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')