根据单元格值的数量更改DataGridView中的行颜色

Rar*_*rar 7 vb.net datagridview winforms

我需要在datagridview中更改行的颜色,但我的代码对我不起作用.我总是收到一个错误,上面写着"名为Quantity的列:无法找到.参数名称:columnName"

这是我的代码:

Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
        If Me.DataGridView1.Rows(i).Cells("Quantity:").Value < 5 Then
            Me.DataGridView1.Rows(i).Cells("Quantity:").Style.ForeColor = Color.Red
        End If
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

请帮我修理一下.谢谢.

gle*_*son 12

这可能会有所帮助

  1. 使用"RowPostPaint"事件
  2. 列的名称不是列的"标题".您必须转到DataGridView =>的属性,然后选择column =>然后查找"Name"属性

我从C#转换了这个('来自:http://www.dotnetpools.com/Article/ArticleDetiail/?articleId = 74)

    Private Sub dgv_EmployeeTraining_RowPostPaint(sender As Object, e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) 
    Handles dgv_EmployeeTraining.RowPostPaint

    If e.RowIndex < Me.dgv_EmployeeTraining.RowCount - 1 Then
        Dim dgvRow As DataGridViewRow = Me.dgv_EmployeeTraining.Rows(e.RowIndex)

    '<== This is the header Name
        'If CInt(dgvRow.Cells("EmployeeStatus_Training_e26").Value) <> 2 Then  


    '<== But this is the name assigned to it in the properties of the control
        If CInt(dgvRow.Cells("DataGridViewTextBoxColumn15").Value.ToString) <> 2 Then   

            dgvRow.DefaultCellStyle.BackColor = Color.FromArgb(236, 236, 255)

        Else
            dgvRow.DefaultCellStyle.BackColor = Color.LightPink

        End If

    End If

End Sub
Run Code Online (Sandbox Code Playgroud)


Rar*_*rar 3

我修正了我的错误。刚刚从这一行中删除了“值”:

If drv.Item("Quantity").Value < 5  Then
Run Code Online (Sandbox Code Playgroud)

所以它看起来像

If drv.Item("Quantity") < 5 Then