Vb.net datagrid视图根据winform应用程序中的状态更改颜色

Vb.net datagrid视图根据winform应用程序中的状态更改颜色,vb.net,winforms,datagridview,Vb.net,Winforms,Datagridview,我有这样一个函数: Sub KPIColorchange() 'take 80 percenatge Dim perc80 As Integer = 80 value80 = DefaultKPI * perc80 / 100 Dim carid As String Dim strr As String = "select t.TBarcode as carid from Khanger_tbl k

我有这样一个函数:

 Sub KPIColorchange()
        'take 80 percenatge
        Dim perc80 As Integer = 80
        value80 = DefaultKPI * perc80 / 100
        Dim carid As String
        Dim strr As String = "select t.TBarcode as carid from Khanger_tbl k 
               inner join transaction_tbl t on k.transactid=t.transactID"
        strr = strr + " where tid= " & tid & " and requested=1 and delivered=0  and status=3 
                and DATEDIFF(n, CAST(paydate AS DATETIME), GETDATE()) >=" & value80 & ""
        Dim cmdr As New SqlCommand(strr, con.connect)
        dr2 = cmdr.ExecuteReader
        While dr2.Read
            If dr2("carid") Is DBNull.Value Then
                carid = ""
            Else
                carid = dr2("carid")
            End If

            Dim cnt As Integer = DGVall.Rows.Count
            For i = 0 To cnt - 2
                If DGVall.Rows(i).Cells(0).Value.ToString().Equals(carid) Then
                    DGVall.Rows(i).DefaultCellStyle.BackColor = Color.Fuchsia
                End If
            Next
        End While
        dr2.Close()
        con.disconnect()


        'take 100 percentage
        Dim perc100 As Integer = 100
        value100 = DefaultKPI * perc100 / 100

        Dim str100 As String = "select t.TBarcode as carid from Khanger_tbl k 
                 inner join transaction_tbl t on k.transactid=t.transactID"
        str100 = str100 + " where tid= " & tid & " and requested=1 and delivered=0  and status=3 and 
                DATEDIFF(n, CAST(paydate AS DATETIME), GETDATE()) >=" & value100 & ""
        Dim cmd100 As New SqlCommand(str100, con.connect)
        dr2 = cmd100.ExecuteReader
        While dr2.Read
            If dr2("carid") Is DBNull.Value Then
                carid = ""
            Else
                carid = dr2("carid")
            End If

            Dim cnt As Integer = DGVall.Rows.Count
            For i = 0 To cnt - 2
                If DGVall.Rows(i).Cells(0).Value.ToString().Equals(carid) Then
                    DGVall.Rows(i).DefaultCellStyle.BackColor = Color.OrangeRed
                End If
            Next
        End While
        dr2.Close()
        con.disconnect()
  End Sub
我有一个网格视图,在该网格视图中,我正在加载一些请求的carid。我们已经为位置设置了一些时间间隔。根据位置时间间隔,我必须在网格视图中更改颜色

如果汽车请求的时间达到80%的位置间隔时间,那么我将更改为一种颜色。 如果汽车请求的时间达到100%的位置间隔时间,那么我将更改为橙色,我在这里只做这么多事情。通常我的datagrid视图包含100多条以上的记录。这个函数我在每一分钟调用一次Timer_tick事件。 但是由于这个函数,我的系统会变慢,或者有一段时间系统会挂起。我如何优化这个代码?
如果我设置dataGridView.VirtualMode=true,任何帮助都是可以提前得到的;这对我有帮助吗?