~$ 存档

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

比如有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。但是如果正好碰到类似问题的童鞋就可以参照下了。呵呵!!!!

 

posted on 2020-08-25 13:23  LuoTian  阅读(906)  评论(0编辑  收藏  举报