【发布时间】:2021-10-08 11:08:17
【问题描述】:
我想要实现的是根据下面代码中提到的条件动态更改datagridview 行的颜色,这意味着如果到期日期大于当前日期,这意味着它已过期,那么行将其颜色更改为红色
如果还有 30 天在到期而不是变黄
private void ViewMedicine_DataGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (Dont know what to write here)
{
foreach (DataGridViewRow row in ViewMedicine_DataGrid.Rows)
{
row.DefaultCellStyle.BackColor = Color.Red;
row.DefaultCellStyle.ForeColor = Color.White;
}
}
}
【问题讨论】:
-
我对你的陈述感到困惑……“如果 E_Date(到期日)大于当前日期,则意味着它已过期”……? ... 这似乎倒退了,应该是“如果 E_Date 小于当前日期,则 E_Date 已过期” ...我错过了什么吗?在任何一种情况下,检查日期是在“当前日期”之前还是之后都会看起来像……
if (E_Date.Date < DateTime.Now.Date) { // E_Date is expired }; -
@JohnG 我已经对问题进行了更改,因为之前由于 SQL 查询部分而造成混淆,并使其变得简单,因此不会混淆。
-
@JohnG 在我解决了这个问题时也发布了答案请检查
-
您可能需要注意...将代码放入网格
RowPrePaint事件意味着即使日期没有更改,代码也会检查日期并为行着色。示例...当用户“滚动”网格时,网格RowPrePaint事件将触发并检查日期并为行着色,当它已经是正确的颜色时。您应该小心将代码放入哪个网格事件,以避免不必要地执行它。这可能会导致 UI 迟缓。 -
另外,如果日期在当前日期之后,我仍然不明白如何“过期”。这对我来说似乎倒退了……但是,如果它对你有用,那就去吧。
标签: c# winforms datagridview