阅读 109

DataGridView双缓冲

比如有1000个箱子,我们要时时观看箱子的数据情况。我们要在一个DataGridView中进行全部监视。串口通信部分我就不说了,因为winform做有自带的SerialPort控件,使用也非常方便。

 

   先给大家上个图

   

 

  每个小黑色的部分都是图片,这也代表的部分箱子。如果箱子成千上万的话,图片就会非常非常多。当窗体启动的话,箱子数目非常多的时候,拉动滚动条的时候,DataGirdView中的图片闪烁非常厉害。以前只知道Form,panel之类的可以使用双缓存,不知道DataGridView也可以使用双缓冲。当然DataGridView双缓冲的接口是没有对外开放的,只能通过反射获取。

 

    以下是反射获取双缓存代码:

           public Form()
        {
            //设置窗体的双缓冲
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);
            this.UpdateStyles();
           
            InitializeComponent();

 

            //利用反射设置DataGridView的双缓冲
            Type dgvType = this.dataGridView.GetType();
            PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(this.dataGridView, true, null);
        }

 

      其中this.dataGridView是自己拖的控件,name为:dataGridView。设置好以后,闪烁的问题就解决了。winform用的少,可能对于.NET方向的大牛很easy。但是如果正好碰到类似问题的童鞋就可以参照下了。呵呵!!!!

 

原文:https://www.cnblogs.com/tinaluo/p/13559128.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐