VB.net datagridview颜色基于从今天起多少天

时间:2019-06-03 11:40:28

标签: vb.net datagridview columnsorting

所以基本上我想得到的是出租物业的付款系统。

我已经建立了一个数据库(为了易于使用而可以访问),我现在正在寻找一种将datagridview中的日期与今天的日期进行比较的方法。如果最后一次付款的日期晚了30天,则必须变成红色。如果其<30,则应保持绿色。

现在,我想知道如何做到这一点,因为我似乎无法使其正常工作。

由于我是vb.net语言的新手,所以我没有任何工作。我认为发布任何代码都是没有用的,因为所有代码都用红色下划线标出,并且我的程序甚至无法运行。

我认为这将是

的风格

If me.dgv.columns("1") > 30: me.dgv.row.defaultcellstyle.color = "red" End if

日期以升序排序/显示,不确定是否有帮助?

任何帮助都将非常有价值,在此先感谢您!

2 个答案:

答案 0 :(得分:2)

  • 要在30天后进行检查,请使用date.Now.addDays(30)
  • 在使用date.Now.addDays(-30)之前30天进行检查
  • 使用以下方法为单元格上色:

    For Each dr As DataGridViewRow In DataGridView1.Rows If CDate(dr.Cells(0).Value) > Date.Now.AddDays(30) Then dr.Cells(0).Style.ForeColor = Color.Red End If Next

您还可以循环这些单元格以检查所有DGV单元格的日期并进行比较

答案 1 :(得分:0)

根据我的经验,最好在RowPrePaint事件中处理此问题。

示例:

        Public Class Test
            Private Shared Rnd As New Random

            Private Sub FormControls_Load(sender As Object, e As EventArgs) Handles MyBase.Load
                'Start Sample
                DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {
                                          .Name = "MyDate",
                                          .ValueType = GetType(DateTime)})
                For i As Integer = 0 To 1000
                    'create random dates in the past
                    DataGridView1.Rows.Add(Now.AddDays(-Rnd.Next(0, 25)))
                Next
                'End Sample
            End Sub

            Private Sub DataGridView1_RowPrePaint(sender As Object, e As DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint
                Dim DgvRow As DataGridViewRow = DataGridView1.Rows(e.RowIndex)

                With DgvRow
                    If DgvRow IsNot Nothing AndAlso DgvRow.Cells(0).Value IsNot Nothing AndAlso DgvRow.Cells(0).Value IsNot DBNull.Value Then
                        If Now.Subtract(CDate(DgvRow.Cells(0).Value)).TotalDays > 20 Then
                            DgvRow.DefaultCellStyle.BackColor = Color.Yellow
                        Else
                            DgvRow.DefaultCellStyle.BackColor = Color.Empty
                        End If
                    End If
                End With

            End Sub


        End Class