c# – 如何防止DataGridView在水平滚动时闪烁?
发布时间:2020-12-15 19:47:41 所属栏目:百科 来源:网络整理
导读:我正在使用 Windows窗体C#. 如屏幕截图所示,我有一个Form,它有一个用户控件,一个tab控件和一个DataGridView(30行和17列).我从SQL Server读取数据以填充DataGrdiView. 问题: 当我水平滚动时,DataGridView会闪烁很多.然而,垂直滚动工作完美,没有闪烁. 我看了h
我正在使用
Windows窗体C#.
如屏幕截图所示,我有一个Form,它有一个用户控件,一个tab控件和一个DataGridView(30行和17列).我从SQL Server读取数据以填充DataGrdiView. 问题: 当我水平滚动时,DataGridView会闪烁很多.然而,垂直滚动工作完美,没有闪烁. 我看了here,here,here和here,但没有一个与我的问题有关. 任何人都知道任何解决方案,以防止DataGridView水平滚动时闪烁. 解决方法
您只需要使用DoubleBuffered DataGridview子类:
class DBDataGridView : DataGridView { public DBDataGridView() { DoubleBuffered = true; } } 也可以将双缓冲注入到正常的开箱即用控件中,但我更喜欢拥有自己的类,因为它在其他方面也是可扩展的. 我已经通过公共属性扩展了类,以允许打开和关闭DoubleBuffering ..: public class DBDataGridView : DataGridView { public new bool DoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } } public DBDataGridView() { DoubleBuffered = true; } } ..并用200列和2000行的负载进行测试.差异很明显;虽然垂直滚动确实工作没有水平滚动需要DoubleBuffering .. 请注意,Form还具有DoubleBuffering属性,但不会传播到任何嵌入式控件! 或者你可以使用function like this (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |