0

我到处寻找并尝试找到解决此问题的方法。我有一个用于显示估计的 datagridview,我的组织需要一些基于估计器和估计进度的格式。下面是我的代码,我遇到的问题是,当此网格可见时,表单上的其他控件会闪烁,并且双缓冲这些控件或表单没有任何区别。我希望通过将格式的应用限制为每行一次会有所帮助,但它仍然在闪烁。

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);
}
}

4

1 回答 1

0

问题是我正在修改行 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));
    }
}

于 2020-11-25T16:28:32.217 回答