1

値に応じて DataGridView 行を強調表示したい。値が検証された場合は緑、そうでない場合は赤。
セルが以前にフォーマットされていない場合、緑と赤が表示されます。ただし、緑の行に戻って検証されていない値を変更すると、1 つのセルが赤に変わりません。緑のままです。
写真を参照してください:
1) エントリなし 2) 検証済みの値を入力 3) 戻って間違った値を入力 ご覧のとおり、最初のセルだけが赤ですが、行全体を赤にしたいです。 CellValidating イベントでセルをフォーマットしています。コードは次のとおりです。
ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力


Private Sub dgvItems_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles dgvItems.CellValidating
    If e.ColumnIndex = ValueColumnIndex Then
        If Not ValidateValue(e.FormattedValue) Then
            Me.dgvItems.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightPink
            Me.dgvItems.DefaultCellStyle.SelectionBackColor = Color.LightPink
            Me.dgvItems.DefaultCellStyle.SelectionForeColor = Color.Black
            e.Cancel = True
        Else
            Me.dgvItems.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight
            Me.dgvItems.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText
            Me.dgvItems.Rows(rowIndex).DefaultCellStyle.BackColor = Color.LightGreen
            Me.dgvItems.Rows(rowIndex).DefaultCellStyle.ForeColor = Color.Black
        End If
    End If
End Sub

どんな助けでも感謝します。ありがとう。

4

2 に答える 2

0

行全体を再フォーマットする場合は、RowValidatingイベント ハンドラーを使用します。

検証で単一のセルのスタイルを変更する場合は、使用しますCellValidating

この線:

Me.dgvItems.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight

グリッド全体のデフォルトのセル スタイルにグローバルな効果があるため、これらの変更をオンLoadに設定してから、イベント ハンドラーに条件付き書式を設定させます。

于 2016-09-09T11:48:02.827 に答える