VB.NET と VS2012 に DGV があります。さまざまなセルのセル書式を動的に変更しようとしています。以下は私のコードです:
Private Sub gridFinancial_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles gridFinancial.CellFormatting
Try
For Each row As chgltrDataSet.gridsourceRow In frmFinBatchChrg.ChgltrDataSet.gridsource.Rows
If gridFinancial.CurrentRow.Cells("CompBool").Value = True Then
Me.gridFinancial.CurrentRow.Cells(0).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(1).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(2).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(3).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(4).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(5).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(6).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(7).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(8).Style.BackColor = Color.Yellow
Me.gridFinancial.CurrentRow.Cells(0).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(1).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(2).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(3).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(4).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(5).ReadOnly = True
Me.gridFinancial.CurrentRow.Cells(6).ReadOnly = True
Me.gridFinancial.Update()
Me.gridFinancial.Refresh()
End if
Catch ex As Exception
End Try
End Sub
私はこれを読みました: http://msdn.microsoft.com/en-us/library/1yef90x0.aspxおそらく何かが欠けているかもしれませんが、現在、そのコードが適用されている場合、DataGridView はそのコードのみを反映します。 DataGridView が描画された後、影響を受けるセルの 1 つをクリックします。つまり、DataGridView がロードされた後、セルはクリックした後にのみ黄色になります (その行内の黄色であるはずのすべてのセルが黄色に表示されます)。どうしてこれなの?何が間違っているのかわかりません。
副次的な質問として、このセル フォーマット イベントは、DGV が描画される前に少なくとも 40 ~ 50 回発生し、6 行の DataSource しかありません。これのためのより良いイベントトリガーはありませんか? 私のコードはもっと良いものになると確信していますが、それは非常に非効率的です。
上記のコードの読み取り専用プロパティは正常に機能するため、イベントが正しくトリガーされていることがわかります。