.net 每两行交替使用背景色
我想每两行交替使用背景色 例如: 我得到的是: 我使用这段代码,但它不能正常工作,如上图所示.net 每两行交替使用背景色,.net,vb.net,.net,Vb.net,我想每两行交替使用背景色 例如: 我得到的是: 我使用这段代码,但它不能正常工作,如上图所示 Dim contador As Integer 'Adding DataRow For Each row As DataGridViewRow In dataCasados.Rows If contador Mod 2 = 0 Then pdfTable.DefaultCell.BackgroundColor = Color.RED Else pdfT
Dim contador As Integer
'Adding DataRow
For Each row As DataGridViewRow In dataCasados.Rows
If contador Mod 2 = 0 Then
pdfTable.DefaultCell.BackgroundColor = Color.RED
Else
pdfTable.DefaultCell.BackgroundColor = Color.BLUE
End If
For Each cell As DataGridViewCell In row.Cells
pdfTable.AddCell(cell.Value.ToString())
Next
contador += 1
Next
有什么帮助吗?您应该使用DataGridView或事件更改行的背景色。使用该事件,您不需要在网格中每次发生更改时循环整个
行
集合:只影响需要重新绘制的行
在这里,颜色被添加到行颜色
数组中,但您可以在自定义属性中定义这些值。步骤/间隔也是如此,此处分配给
行步骤
字段:
Private rowColors As Color() = {Color.Yellow, Color.LightGreen}
Private rowStep As Integer = 2 ' or 1 or 3 or...
Private Sub dataCasados_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs)
Dim dgv = DirectCast(sender, DataGridView)
Dim colorIndex As Integer = If((e.RowIndex / rowStep) Mod 2 = 0, 0, 1)
dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = rowColors(colorIndex)
End Sub
作为一个外部循环,因为它显然是需要的:
Dim dgv = dataCasados
For Each row As DataGridViewRow In dgv.Rows
Dim colorIndex As Integer = If((row.Index / rowStep) Mod 2 = 0, 0, 1)
dgv.Rows(row.Index).DefaultCellStyle.BackColor = rowColors(colorIndex)
Next
您应该使用DataGridView或事件来更改行的背景色。使用该事件,您不需要在网格中每次发生更改时循环整个
行
集合:只影响需要重新绘制的行
在这里,颜色被添加到行颜色
数组中,但您可以在自定义属性中定义这些值。步骤/间隔也是如此,此处分配给
行步骤
字段:
Private rowColors As Color() = {Color.Yellow, Color.LightGreen}
Private rowStep As Integer = 2 ' or 1 or 3 or...
Private Sub dataCasados_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs)
Dim dgv = DirectCast(sender, DataGridView)
Dim colorIndex As Integer = If((e.RowIndex / rowStep) Mod 2 = 0, 0, 1)
dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = rowColors(colorIndex)
End Sub
作为一个外部循环,因为它显然是需要的:
Dim dgv = dataCasados
For Each row As DataGridViewRow In dgv.Rows
Dim colorIndex As Integer = If((row.Index / rowStep) Mod 2 = 0, 0, 1)
dgv.Rows(row.Index).DefaultCellStyle.BackColor = rowColors(colorIndex)
Next
你需要首先考虑逻辑,然后编写代码来实现逻辑,而不是仅仅在不知道它必须做什么的情况下拔出代码。这里没有什么困难。这是基本的算术。如果你可以每一行改变一个东西,那么你可以每两行改变一个东西,因为逻辑是完全一样的,加上一个简单的算术位。你认为你必须对序列{0,1,2,3,4,…}进行什么转换才能得到序列{0,0,1,1,2,…}?你已经知道如何处理第二个序列了,因为你已经在做了。不要使用你自己生成的序列。使用行的索引,即对循环使用
,而不是对每个
循环使用。每次将变换应用于循环计数器,然后对结果执行与现在完全相同的操作。应用逻辑不需要任何编程经验,因此任何初学者都可以至少解决问题的逻辑部分。看,有很多方法可以做到这一点,但如果您需要业务逻辑方面的帮助,请花时间思考一下:您可以将当前使用的背景色存储在变量中。你可以像以前一样,每两行使用模来更改变量中储存的颜色。如果contador Mod 4<2,那么
应该这样做。是的,它工作得很好!谢谢你,你需要先考虑逻辑,然后编写代码来实现逻辑,而不是仅仅在不知道该做什么的情况下拔出代码。这里没有什么困难。这是基本的算术。如果你可以每一行改变一个东西,那么你可以每两行改变一个东西,因为逻辑是完全一样的,加上一个简单的算术位。你认为你必须对序列{0,1,2,3,4,…}进行什么转换才能得到序列{0,0,1,1,2,…}?你已经知道如何处理第二个序列了,因为你已经在做了。不要使用你自己生成的序列。使用行的索引,即对
循环使用,而不是对每个
循环使用。每次将变换应用于循环计数器,然后对结果执行与现在完全相同的操作。应用逻辑不需要任何编程经验,因此任何初学者都可以至少解决问题的逻辑部分。看,有很多方法可以做到这一点,但如果您需要业务逻辑方面的帮助,请花时间思考一下:您可以将当前使用的背景色存储在变量中。你可以像以前一样,每两行使用模来更改变量中储存的颜色。如果contador Mod 4<2,那么
应该这样做。是的,它工作得很好!感谢dude@AndrewMortoni我在使用ITextSharp这就是为什么我不能使用你在那里发布的方法我需要使用我在问题中发布的两个for循环我不知道为什么你不能使用ITextSharp(BTW1,你应该升级到),但你可以在循环中使用相同的逻辑。是一样的。顺便说一句,你在问题的任何地方都没有提到ITextSharp。请参阅编辑(不过,你不需要这个)。在你的问题中添加与ITextSharp要求相关的信息。我使用ITextSharp这就是为什么我不能使用你在那里发布的方法我需要使用我在问题中发布的两个for循环我不知道为什么你不能使用ITextSharp(BTW1,你应该升级到),但是,您可以在循环中使用相同的逻辑。是一样的。顺便说一句,你在问题的任何地方都没有提到ITextSharp。请参阅编辑(不过,你不需要这个)。在您的问题中添加与此上下文中ITextSharp要求相关的信息。