7

我需要更改 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

请帮我修复它。谢谢你。

4

7 回答 7

13

这可能会有所帮助

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

我从 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
于 2013-02-12T19:22:44.227 回答
3

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

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

所以它看起来像

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

于 2012-11-18T06:04:21.060 回答
1

试试这个(注意:我现在没有 Visual Studio,所以代码是从我的存档中复制粘贴的(我还没有测试过):

Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    Dim drv As DataRowView
    If e.RowIndex >= 0 Then
        If e.RowIndex <= ds.Tables("Products").Rows.Count - 1 Then
            drv = ds.Tables("Products").DefaultView.Item(e.RowIndex)
            Dim c As Color
            If drv.Item("Quantity").Value < 5  Then
                c = Color.LightBlue
            Else
                c = Color.Pink
            End If
            e.CellStyle.BackColor = c
        End If
    End If
End Sub
于 2012-11-14T13:02:42.723 回答
1

只需删除:您的Quantity. 确保您的属性与您在代码中包含的参数相同,如下所示:

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
于 2015-03-03T12:25:00.210 回答
0
If drv.Item("Quantity").Value < 5  Then

用这个来喜欢这个

If Cint(drv.Item("Quantity").Value) < 5  Then
于 2014-05-19T11:50:41.287 回答
0

使用CellFormating 事件e参数:

If CInt(e.Value) < 5 Then e.CellStyle.ForeColor = Color.Red

于 2016-05-03T21:32:46.807 回答
0
Dim dgv As DataGridView = Me.TblCalendarDataGridView

For i As Integer = 0 To dgv.Rows.Count - 1
    For ColNo As Integer = 4 To 7
        If Not dgv.Rows(i).Cells(ColNo).Value Is DBNull.Value Then

            dgv.Rows(i).Cells(ColNo).Style.BackColor =  vbcolor.blue
        End If
    Next
Next
于 2016-06-30T11:05:18.980 回答