特定の状況に応じて、特定の行の cellstyle.backcolor を変更する VB.Net で記述されたコードがあります。コードは機能します。しかし、私は奇妙な出来事に遭遇します。
行全体の色を黄色に変更した場合は、白に戻して (特に 1 つのセルを対象とするため、行の色を白に設定し、特定のセルの defaultcellstyle.backcolor を白に対象とします)、色を変更します。行全体のうち、最初に白に設定されていた 1 つのセルは変更されません。
どうしてこれなの?行の色はセル スタイルの色に取って代わりませんか? 明示的にターゲティングされたセルは白またはグレーのいずれかである可能性があるため、ターゲティングする必要があります。
編集: コードは以下のとおりです (フォームロードで読み込まれます)。これを初めて実行すると、問題なく動作します。含まれている datagridview 内でクリック イベントをトリガーするかどうかによっては、2 回目に実行されたときに前景色がトマトに色付けされない場合があります。コードをステップ実行するたびに、常にセルの書式設定にヒットします。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