首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DataGridView不渲染随机单元

DataGridView不渲染随机单元
EN

Stack Overflow用户
提问于 2013-05-22 00:38:57
回答 1查看 378关注 0票数 0

我有一个datagridview,我使用dgv.DataSource = table从数据源填充它。然后,我使用一个单元格格式化事件来根据值更改datagridview中特定单元格的颜色。我面临的问题是,当查看某些pc上的数据时,一些随机单元格将显示为白色,没有数据。我用来设置颜色的代码如下,然而,不仅仅是我设置了自定义颜色的单元格显示为白色:

代码语言:javascript
代码运行次数:0
运行
复制
    private void dgvRaw_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e != null)
        {
            DataGridView dgv = (DataGridView)sender;

            if (dFlags.ContainsKey(dgv.Columns[e.ColumnIndex].Name))
            {
                e.CellStyle.ForeColor = Color.Black;
                // If pass set green else set red 
                if (e.Value != null)
                {
                    if (e.Value.ToString() == "0")
                        e.CellStyle.BackColor = System.Drawing.Color.Green;
                    else
                        e.CellStyle.BackColor = System.Drawing.Color.Red;
                }
                else
                    e.CellStyle.BackColor = System.Drawing.Color.Orange;
            }
        }
    }

我真的不知道为什么会发生这种情况,或者是因为计算机不能处理大型网格视图。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-23 15:03:36

事实证明,datagridview的问题是默认情况下没有启用双缓冲。我使用一个自定义的datagridview类来启用双缓冲,从那时起我就没有遇到过任何问题,我怀疑这是因为有一个非常大的数据集,它在渲染整个区域时遇到了问题,而在低端pcs上,它只是放弃了。我已经包含了下面的类

代码语言:javascript
代码运行次数:0
运行
复制
    /// <summary>
    /// Custom datagridview to enable double buffering
    /// </summary>
    public class MyDataGridView : DataGridView
    {
        public MyDataGridView()
        {
            DoubleBuffered = true;
        }
    }

我不能接受这段代码的功劳,因为我在Stack Overflow上的另一个源码上找到了它,但是它是一个不同的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16675155

复制
相关文章

相似问题

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