无闪烁的listview


Q:http://topic.csdn.net/u/20071205/15/116fa433-69bc-418d-a31c-3c279abc8007.html

  A:

public partial class Form1 : Form
  ...{
    
    class  DoubleBufferListView  :  ListView
    ...{
        public  DoubleBufferListView()
        ...{
            SetStyle(ControlStyles.DoubleBuffer|ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint,  true);
            UpdateStyles();
        }
    }
  
    public Form1()
    ...{
      InitializeComponent();
    }
  
    DoubleBufferListView lv = new DoubleBufferListView();
    private void Form1_Load(object sender, EventArgs e)
    ...{
     
      this.Controls.Add(lv);
      lv.Height = 300;
      lv.Width = 300;
      new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(doAdd)).Start();
    }
  
    void doAdd(object obj)
    ...{
      if (this.InvokeRequired)
      ...{
        this.Invoke(new System.Action<object>(doAdd), new object[] ...{ obj });
      }
      else
      ...{
        for (int i = 0; i < 100; i++)
        ...{
          this.lv.Items.Add(new ListViewItem("jinjazz" + this.lv.Items.Count.ToString()));
          System.Threading.Thread.Sleep(10);
          Application.DoEvents();
        }
      }
    }
  }


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3