0

我有一些用 VB.Net 编写的代码,根据某些情况,它会更改某些行的 cellstyle.backcolor。该代码有效。虽然,我遇到了奇怪的事情。

如果我将整行的颜色更改为黄色,然后将其更改回白色(特别针对一个单元格,因此它将行颜色设置为白色,然后将特定单元格的 defaultcellstyle.backcolor 设置为白色),然后更改颜色整行变为灰色,原来设置为白色的一个单元格不会改变。

为什么是这样?行颜色不会取代单元格样式颜色吗?明确定位的单元格可以是白色或灰色,所以这就是它必须成为目标的原因,我只在明确表示为白色的情况下对其进行了测试。

编辑:代码如下(它在表单加载中加载)。它第一次运行时很好并且可以正常工作。根据我是否在包含的 datagridview 中触发单击事件,它第二次运行时可能不会将前景色着色为番茄。每次我单步执行代码时,它总是会遇到单元格格式。我不确定为什么在单击 datagridview 后,filterrows() 的下一次迭代将命中单元格格式,但不会反映在 datagridview 中。在 filterrows() 之后,显示表单/DGV。

        Public Sub filterrows()
    Dim intCount As Integer = 0

    'PROCESS THROUGH LCC_RETAINED FOR ACCOUNTING MESSAGES AND TEMP CARDS
    For Each row As chgltrDataSet.BCL_CC_Select_DataRow In frmFinBatchChrg.ChgltrDataSet.BCL_CC_Select_Data
        If row.Item("LCC_RETAINED").ToString = "X" Then
            gridccselector.Rows(intCount).Cells(0).Style.ForeColor = Color.Tomato
            row.Item("LCC_CARD_TYPE") = ""
            row.Item("LCC_CC_EXP") = ""
            row.Item("LCC_NAME_ON_CARD") = ""
        ElseIf row.Item("LCC_RETAINED").ToString = "0" Then
            gridccselector.Rows(intCount).Cells(0).Style.ForeColor = Color.Yellow
        End If
        intCount += 1
    Next
End Sub
4

1 回答 1

0

弄清楚了。我在表单关闭的地方添加了以下内容。我在一个表格关闭(取消时)但不是另一个的情况下遇到了这个问题。

    Me.dispose()
于 2013-01-28T21:12:08.830 回答