zoukankan      html  css  js  c++  java
  • 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。但是如果正好碰到类似问题的童鞋就可以参照下了。呵呵!!!!

  • 相关阅读:
    java 环境变量配置
    框架分成介绍
    Net 新特性
    一 设计模式六大原则
    web api 配置
    Visual Studio检查内存泄露方法
    深度比较对象的不同
    reportview 安装使用
    Nuget 常用命令
    freeswitch学习笔记
  • 原文地址:https://www.cnblogs.com/tinaluo/p/13559128.html
Copyright © 2011-2022 走看看