该 细胞的数量 要更新,并在 更新率 ,你要足够高,以引起 闪烁 和 滞后 。
为了避免它,你可以打开
DoubleBuffering了
DataGridView。
默认情况下不公开此属性。所以可以选择
- 创建一个 子类 或
- 通过 反射* 访问它 *
这是一个展示前者的帖子。它是为滚动闪烁而编写的,但也有助于避免更新滞后。该类可能看起来像这样:
public class DBDataGridView : DataGridView{ public new bool DoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } } public DBDataGridView() { DoubleBuffered = true; }}
您可以将此类添加到项目中,也可以将其添加到表单类中(在最后一次卷曲之前)。进行编译,它将显示在工具箱中。
另一种选择是 反射 ; 这是一个通用函数,适用于任何类型的控件:
using System.Reflection;static void SetDoubleBuffer(Control ctl, bool DoubleBuffered){ typeof(Control).InvokeMember("DoubleBuffered", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty, null, ctl, new object[] { DoubleBuffered });}
两种方式都可以让您随意打开
DoubleBuffering和关闭。前者通过现在暴露的 属性 ,后者通过
bool方法的参数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)