C#彻底解决 listview的闪屏问题_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C#彻底解决 listview的闪屏问题

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:问题解决彻底 
黑客防线网安网讯:     也许很多人也遇到这样的问题,连续不断向listview中加载数据时界面会不停的闪烁,当你用listview.BeginUpdate();     listview.EndUpdate(); 虽然可以减轻一些,但也不能彻底消除闪屏。...

     也许很多人也遇到这样的问题连续不断向listview中加载数据时界面会不停的闪烁当你用listview.BeginUpdate();     listview.EndUpdate(); 虽然可以减轻一些,但也不能彻底消除闪屏不信?可以试试下面的代码:    public partial class Form1 : Form
    ...{
        private int counter = 0;
        public Form1()
        ...{
            InitializeComponent();
        }
        DoubleBufferListView lv = new DoubleBufferListView();

        ListView lv = new ListView();
        private void Form1_Load(object sender, EventArgs e)
        ...{
            timer1.Enabled = false;
            this.Controls.Add(lv);            
            lv.View = View.Details;
            lv.GridLines = true;
            lv.BackColor = Color.Silver;
            lv.Columns.Add("aa");
            lv.Columns.Add("bb");
            lv.Columns.Add("cc");
            lv.Height = 300;
            lv.Width = 300;
            timer1.Enabled = true;
         }
        private void timer1_Tick(object sender, EventArgs e)
        ...{
            lv .Items.Add(counter.ToString());
            counter++;
        }
     }
解决方法:

使用双缓冲,重写listview

class DoubleBufferListView : ListView
    ...{
        public DoubleBufferListView()
        ...{
            SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
            UpdateStyles();
        }
    } 
    public partial class Form1 : Form
    ...{
        private int counter = 0;
        public Form1()
        ...{
            InitializeComponent();

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15142-1.html
网站维护教程更新时间:2012-04-04 22:50:50  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer