所以基本上我想得到的是一个出租物业的支付系统。
我已经建立了一个数据库(为了便于工作而访问(,我现在正在寻找一种方法来比较 datagridview 中的日期和今天的日期。如果最后一次付款的日期晚了 30 天,则必须变为红色。如果它<30,它应该保持绿色。
现在我想知道如何做到这一点,因为我似乎无法让它工作。
由于我对 vb.net 语言相当陌生,所以我没有任何东西可以工作。我认为发布任何代码都是无用的,因为它都用红色下划线,我的程序甚至无法运行。
我想这将是某种风格
If me.dgv.columns("1") > 30:
me.dgv.row.defaultcellstyle.color = "red"
End if
日期以升序排序/显示,不确定这是否有帮助?
任何帮助都将非常有价值,我提前感谢您!
- 要在 30 天后检查,请使用
date.Now.addDays(30)
- 使用前 30 天检查
date.Now.addDays(-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单元格的日期并进行比较
根据我的经验,最好在 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