Как вычеркнуть данные в DataGridView? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть DataGridView в моем проекте, я хочу получить определенные данные, если одна из ячеек в данных читает «Void», но когда я использовал код, я использовал все данные в DataGridView, что означало принятиеПервый аргумент для всех данных, несмотря на то, что некоторые данные в указанных ячейках читаются как «Активные».

Ниже мой код:

For Each r As DataGridViewRow In frmCheckOut_Room.DataGridView2.Rows
    If (r.Cells(9).Value) = "Void" Then
        r.DefaultCellStyle.ForeColor = Color.Red
        r.DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8, FontStyle.Strikeout)
    ElseIf (r.Cells(9).Value) = "Active" Then
        r.DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8)
        r.DefaultCellStyle.BackColor = Color.Orange
    End If
Next

1 Ответ

0 голосов
/ 16 октября 2018

Привет
Я использую CellFormatting событие сетки для достижения этого.Например:

 Private Sub DataGridView2_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView2.CellFormatting
    If e.ColumnIndex = DataGridView2.Columns("YOUR_COLUMN_NAME").Index AndAlso e.Value IsNot Nothing Then
        If (e.Value = "Void") Then
            DataGridView2.Rows(e.RowIndex).DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8, FontStyle.Strikeout)
            DataGridView2.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Red
        ElseIf (e.Value = "Active") Then
           DataGridView2.Rows(e.RowIndex).DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 8)
           DataGridView2.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Orange
        End If
    End If
End Sub

Я предпочитаю использовать имя столбца вместо индекса столбца, но при желании вы можете заменить If e.ColumnIndex = DataGridView2.Columns("YOUR_COLUMN_NAME").Index Then
на:

If e.ColumnIndex = 9 Then

Я неУ меня есть шанс проверить это, поэтому, если у вас есть какие-либо проблемы или вопросы, не стесняйтесь сообщать мне.
С уважением
РЕДАКТИРОВАТЬ: Если вы хотите пометить каждую ячейку в сетке, которая содержит слово " Active " или " Void ", просто используйте этокод:

Private Sub DataGridView2_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView2.CellFormatting
If (e.Value.GetType() = GetType(String)) Then
    If (e.Value = "Void") Then
        DataGridView2(e.ColumnIndex, e.RowIndex).Style.Font = New Font("Microsoft Sans Serif", 8, FontStyle.Strikeout)
        DataGridView2(e.ColumnIndex, e.RowIndex).Style.BackColor = Color.Red
    ElseIf (e.Value = "Active") Then
       DataGridView2(e.ColumnIndex, e.RowIndex).Style.Font = New Font("Microsoft Sans Serif", 8)
       DataGridView2(e.ColumnIndex, e.RowIndex).Style.BackColor = Color.Orange
    End If
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...