DataGridView表现得很奇怪......没有重绘,留下了奇怪的文物

时间:2014-01-30 16:42:15

标签: c# winforms datagridview

我有使用DataGridView的WinForms应用程序。我有一个单元格背景/文本颜色更改取决于另一个单元格(在同一行)值。当屏幕尺寸,移动或其他任何东西时,我似乎遇到了细胞看起来像垃圾的问题。

这就是问题所在:

enter image description here

这是我用来更改列颜色的代码。

public static void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // this is used to colorize the cells..
    try
    {
        DataGridView dgv = (DataGridView)sender;

        string currentColumnName = dgv[e.ColumnIndex, e.RowIndex].OwningColumn.Name;

        if (dgv.Columns.Contains(currentColumnName + "_TEXT_COLR"))
        {
            string colourString = dgv[currentColumnName + "_TEXT_COLR", e.RowIndex].Value.ToString();
            e.CellStyle.ForeColor = ColorTranslator.FromHtml(colourString);
        }
        else
            e.CellStyle.ForeColor = Color.Black;

        if (dgv.Columns.Contains(currentColumnName + "_BACK_COLR"))
        {
            string colourString = dgv[currentColumnName + "_BACK_COLR", e.RowIndex].Value.ToString();
            e.CellStyle.BackColor = ColorTranslator.FromHtml(colourString);
        }
        else
        {
            if (dgv.Columns[e.ColumnIndex].ReadOnly)
                e.CellStyle.BackColor = Color.Yellow;
            else
                e.CellStyle.BackColor = Color.White;
        }                

    }
    catch (Exception)
    {
        // ?
    }

}

我尝试刷新控件和表单......没有运气。

任何?

1 个答案:

答案 0 :(得分:0)

来自here

public static void DoubleBuffered(this DataGridView dgv, bool setting)
{
    Type dgvType = dgv.GetType();
    PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
    pi.SetValue(dgv, setting, null);
}

很棒!!