我到处寻找解决方案。我有一个数据网格视图来显示估计,我的组织想要一些基于估计和估计进度的格式。下面是我的代码,我遇到的问题是,当这个网格可见时,表单上的其他控件会闪烁,并且对这些控件或表单进行双重缓冲并没有产生任何影响。我希望将格式设置限制为每行一次会有所帮助,但它仍然在闪烁。
if (DGVR.Cells["Estimate_Progress"].ColumnIndex == colIndex)
{
if (DGVR.Cells["Color_Value"].Value != null)
{
if (DGVR.Cells["Color_Value"].Value.ToString() != "")
{
string colorVal = DGVR.Cells["Color_Value"].Value.ToString();
DGVR.DefaultCellStyle.BackColor = Color.FromArgb(Convert.ToInt32(colorVal));
}
else
{
DGVR.DefaultCellStyle = DGV.RowsDefaultCellStyle;
}
}
else
{
DGVR.DefaultCellStyle = DGV.RowsDefaultCellStyle;
}
if (DGVR.Cells["Estimate_Progress"].Value != null)
{
string progressVal = DGVR.Cells["Estimate_Progress"].Value.ToString();
if (progressVal == "Not Bidding")
{
Font font = DGVR.DefaultCellStyle.Font;
DGVR.DefaultCellStyle.Font = new Font(font, FontStyle.Strikeout);
}
else
{
Font font = DGV.DefaultCellStyle.Font;
DGVR.DefaultCellStyle.Font = new Font(font, FontStyle.Regular);
}
}
else
{
Font font = DGV.DefaultCellStyle.Font;
DGVR.DefaultCellStyle.Font = new Font(font, FontStyle.Regular);
}
}
问题是我正在修改行DefaultCellStyle而不是e.CellStyle
Font font = DGV.DefaultCellStyle.Font;
if (DGVR.Cells["Estimate_Progress"].Value != null)
{
string progressVal = DGVR.Cells["Estimate_Progress"].Value.ToString();
if (progressVal == "Not Bidding")
{
e.CellStyle.Font = new Font(font, FontStyle.Strikeout);
}
}
if (DGVR.Cells["Color_Value"].Value != null)
{
if (DGVR.Cells["Color_Value"].Value.ToString() != "")
{
string colorVal = DGVR.Cells["Color_Value"].Value.ToString();
e.CellStyle.BackColor = Color.FromArgb(Convert.ToInt32(colorVal));
}
}