DataGridview 重绘非常慢

发布于 2024-08-21 16:29:38 字数 195 浏览 12 评论 0原文

我在 C# VS2005 .net 2.0 开发的 Windows 应用程序中使用 datagridview。

Datagridview 提供了业务对象的列表。在开始以落幕方式显示 datagridview 中的行之前,需要 2-3 秒的烦人延迟。当我从任何其他窗口切换回我的应用程序时,它会以相同的落幕方式开始重绘过程。 这很烦人。请有人帮我解决这个问题!

I'm using datagridview in windows application developed in C# VS2005 .net 2.0.

Datagridview is provided a list of business objects. It take annoying delay of 2-3 seconds before starting displaying the rows in datagridview in falling-curtain fashion. When I switch back to my application from any other window it start repaint process in the same falling-curtain fashion.
This is quite annoying. Plz someone help me sort this out!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千秋岁 2024-08-28 16:29:38

我不知道它为什么起作用,但是将 DataGridView 控件设置为双缓冲绝对是一种享受。确保主机表单上的 DoubleBuffered 属性也为 false。

完成此操作后,我的网格控件从重新绘制如此缓慢(无论数据量如何)以至于您几乎可以在单元格进入时对它们进行计数, - 到像任何其他控件一样快速地重新绘制。

DoubleBuffered 属性在 DataGridView 上受到保护,因此您需要创建一个派生类并在那里设置该属性,例如:

class DoubleBufferDataGrid : DataGridView
{
    public DoubleBufferDataGrid()
        : base()
    {
        this.DoubleBuffered = true;
    }
}

I don't know why it works, but setting the DataGridView control to double-buffered works an absolute treat. Make sure the DoubleBuffered property on the host-form is false also.

After doing this, my grid control went from redrawing so slowly (regardless of data-volume) that you could almost count the cells as they went in, - to redrawing as quick as any other control.

The DoubleBuffered property is protected on the DataGridView, so you will need to create a derived class and set the property there, eg:

class DoubleBufferDataGrid : DataGridView
{
    public DoubleBufferDataGrid()
        : base()
    {
        this.DoubleBuffered = true;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文