现在,我正在使用以下内容为datagridview行上色:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if ((row.Index % 2) == 0)
{
row.DefaultCellStyle.BackColor = Color.NavajoWhite;
}
}
这对于第一次加载数据很好。但是,我也使用第三方库来过滤列,就像excel一样(http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup)。它工作得很好,但是问题是这段代码在应用的每个筛选上重新绘制datagridview(纯白色)。例如,如果我愿意,我可以捕捉在每次筛选之后重新绘制行所必需的事件
dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
但是如果我有大矩阵(成百上千行),那是非常低效的。
问题是是否有一种方法可以使行背景色固定,尽管通过过滤完成了重新绘制。在我看来,这可能是一个很长的机会,所以任何建议,以解决这个问题或使它更快和更有效,将不胜感激。
最佳答案
对每个单元格尝试仅处理CellPainting
事件
private void dataGridView1_CellPainting(object sender,
System.Windows.Forms.DataGridViewCellPaintingEventArgs e)
{
if ((e.RowIndex % 2) == 0)
e.CellStyle.BackColor = Color.NavajoWhite;
}