首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewImageColumn,图像闪烁

DataGridViewImageColumn,图像闪烁
EN

Stack Overflow用户
提问于 2015-02-24 06:01:49
回答 1查看 1.5K关注 0票数 1

我在DataTable窗体上绑定了一个DataTable。我希望向其插入一个未绑定的DataGridViewImagecolumn,并根据另一列的值设置图像。在DataGidView_CellFormating事件中设置图像。代码如下

代码语言:javascript
复制
DataGridView dgvResult = new DataGridView();
dgvResult.DataSource = dtResult;
DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
imageColumn.Width = 40;
imageColumn.Name = "Image";
imageColumn.HeaderText = "";
dgvResult.Columns.Insert(0, imageColumn);

    private void dgvResult_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (dgvResult.Columns[e.ColumnIndex].Name == "Image")
        {
            DataGridViewRow row = dgvResult.Rows[e.RowIndex];
            if (Utils.isNumeric(row.Cells["CM_IsExport"].Value.ToString()) && Int32.Parse(row.Cells["CM_IsExport"].Value.ToString()) == 1)
            {
                    row.Cells["Image"].Value = Properties.Resources.export16;
            }
            else { row.Cells["Image"].Value = Properties.Resources.plain16; }
        }
    }

一切都很好。我的问题是,细胞中显示的图像是闪烁的。有人知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-24 06:43:10

正在发生闪烁,因为要在CellFormatting事件处理程序中设置图像。

根据MSDN,每次绘制每个单元格时都会发生CellFormatting事件,因此在处理此事件时应避免冗长的处理。

您可以根据需要处理DataBindingCompleteCellValueChanged事件来设置映像。

还可以通过为正在使用的实例创建自定义DoubleBuffering或通过反射为DataGridView启用DataGridView

代码语言:javascript
复制
class CustomDataGridView : DataGridView
{
    public CustomDataGridView()
    {
        DoubleBuffered = true;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28689139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档