DataGridView以及DotNetBar中的DatagridviewX防止闪烁的方法
来源:互联网 发布:淘宝网水兵舞裙子 编辑:程序博客网 时间:2024/06/05 10:22
最近的项目中有一个模块中需要对datagridview中的单元格进行着色,在datagridview的CellFormatting事件中加入着色代码后,功能实现,但是因为涉及到单元格的重画,所以数据一多会产生闪烁的情况,设置了几个参数都未能解决,遂感觉可能需要对画图的方法进行优化,马上就想到了双缓存,而在MSDN上的Datagridview的却明确表示并不支持双缓存,这让我感到很奇怪。后来,又查询了很多资料才弄清楚,原来Datagridview是有双缓存机制的,但是不知道为什么微软将它隐藏了,但是非常幸运的是,微软并没有完全屏蔽双缓存,你可以通过反射来设置它。
我使用的系统是windows2003,IDE是VS2008,开发语言是c#
代码如下:
1.针对微软的Datagridview控件
你可以自己方案中添加一个方法
Datagridview双缓存机制
2.针对DotNetBar的DatagridviewX控件
因为我在程序中使用了第三方控件DotNetbar美化界面,所以使用的是DotNetBar的DatagridviewX控件
程序也相应的修改为
DatagridviewX双缓存机制
public static class DoubleBuff
{
//DevComponents.DotNetBar.Controls.DataGridViewX
public static void DoubleBuffered(this DevComponents.DotNetBar.Controls.DataGridViewX dgv, bool setting)
{
Type dgvType = dgv.GetType();
PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(dgv, setting, null);
}
}
这样剩下的工作就只需要在Form的构造函数中设置一下就好了
public FORM1()
{
InitializeComponent();
dgv_BaseStation.DoubleBuffered(true);
}
其中dgv_BaseStation是我的Datagridview和DatagridviewX的实例名。
至此,大功告成,一切运行正常。
我使用的系统是windows2003,IDE是VS2008,开发语言是c#
代码如下:
1.针对微软的Datagridview控件
你可以自己方案中添加一个方法
Datagridview双缓存机制
public static class ExtensionMethods{ public static void DoubleBuffered(this DataGridView dgv, bool setting) { Type dgvType = dgv.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic); pi.SetValue(dgv, setting, null); }}
2.针对DotNetBar的DatagridviewX控件
因为我在程序中使用了第三方控件DotNetbar美化界面,所以使用的是DotNetBar的DatagridviewX控件
程序也相应的修改为
DatagridviewX双缓存机制
public static class DoubleBuff
{
//DevComponents.DotNetBar.Controls.DataGridViewX
public static void DoubleBuffered(this DevComponents.DotNetBar.Controls.DataGridViewX dgv, bool setting)
{
Type dgvType = dgv.GetType();
PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(dgv, setting, null);
}
}
这样剩下的工作就只需要在Form的构造函数中设置一下就好了
public FORM1()
{
InitializeComponent();
dgv_BaseStation.DoubleBuffered(true);
}
其中dgv_BaseStation是我的Datagridview和DatagridviewX的实例名。
至此,大功告成,一切运行正常。
- DataGridView以及DotNetBar中的DatagridviewX防止闪烁的方法
- DotNetbar 中DataGridViewX实现全选的方法
- 一些防止闪烁的方法
- 防止窗口闪烁的方法
- 防止窗口闪烁的方法
- DataGridView DataSource INotifyPropertyChanged 避免闪烁的方法
- 经验总结之防止窗口闪烁的方法
- 经验总结之防止窗口闪烁的方法
- 经验总结之防止窗口闪烁的方法
- 防止CListCtrl闪烁的几种方法
- 防止CListCtrl闪烁的几种方法
- 自绘CListCtrl防止闪烁的方法
- 防止CListCtrl闪烁的几种方法
- 防止CListCtrl闪烁的几种方法
- 自绘CListCtrl防止闪烁的方法
- 经验总结之防止窗口闪烁的方法
- 防止CListCtrl闪烁的几种方法
- 防止CListCtrl闪烁的几种方法
- SVN简介
- 老天保佑
- serialize datatable to json
- 在Ubuntu中安装工具Autotools
- WinDbg调试器
- DataGridView以及DotNetBar中的DatagridviewX防止闪烁的方法
- jQuery自定义事件和jQuery.extend
- 我写的资料管理软件
- C++程序设计实验报告(八十一)---第十六周任务三
- c++ 重载 覆盖 隐藏
- C# 基本知识 之 改错
- 转载CSDNer的一些把妹技巧..........偶不需要了,嘿嘿嘿转载给来我博客看的纯情男人 .
- js基础知识学习站点汇总
- TCP/IP详解