1

我尝试使用 DataGridView 的 RowPrePaint 事件有条件地设置行的 BackColor。当我启动我的应用程序时,行已正确呈现,但存在行被呈现两次的问题。

我正在使用 Windows 窗体构建应用程序。

private void grd_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
   var row = grd.Rows[e.RowIndex];
   if (row.DataBoundItem is ViewModel model && !model.Materialized)
   {
       row.DefaultCellStyle.BackColor = Color.Orange;
   }
}
4

1 回答 1

1

我发现这是因为我只在方法中更改了行的属性。因此,该行被重新绘制。我决定使用 DataGridViewRowPrePaintEventArgs 参数的 Graphics 属性来填充一个矩形作为自定义背景。之后,我将内容填充到除背景之外的行并设置 e.Handled = true 以避免进一步绘制。

于 2019-09-12T04:03:00.387 回答