contrôle C # ListView, lors de l'utilisation, lorsque l'intérieur des données fréquemment mises à jour, le scintillement se produit.
Solution: Utiliser le double buffering, première classe rewrite ListView, puis, puis mettre à jour les données fréquemment réécrite par classe héritant après, initialise la définition du contrôle n'est pas un scintillement.
// 对ListView进行继承重写: publique classe DoubleBufferListView: ListView { publique DoubleBufferListView () { SetStyle (ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, vrai ); UpdateStyles (); } }
Ci-dessous un exemple d'utilisation:
//视图函数中定义一个Listview控件: DoubleBufferListView doubleBufferListView1 = nouveau DoubleBufferListView (); ce .doubleBufferListView1.Location = nouveau System.Drawing.Point ( 50 , 37 ); ce .doubleBufferListView1.Name = " doubleBufferListView1 " ; ce .doubleBufferListView1.Size = nouveau System.Drawing.Size ( 400 , 191 ); ce .doubleBufferListView1.View = System.Windows.Forms.View.Details;
//添加listview到主视图 cette .Controls.Add ( ce.doubleBufferListView1); //对控件进行列表头的添加 doubleBufferListView1.Clear (); doubleBufferListView1.Columns.Add ( " action " , 80 , System.Windows.Forms.HorizontalAlignment.Left); doubleBufferListView1.Columns.Add ( " valeur " , 80 , System.Windows.Forms.HorizontalAlignment.Right); doubleBufferListView1.Columns.Add ( " action " , 80 , System.Windows.Forms.HorizontalAlignment.Left); doubleBufferListView1.Columns.Add ( " valeur " , 80 , System.Windows.Forms.HorizontalAlignment.Left); //添加行数据 string [] = listViewData nouvelle chaîne [ 4 ]; listViewData [ 0 ] = " action " ; listViewData [ 1 ] = " 1 " ; listViewData [ 2 ] = " action " ; listViewData [ 3 ] = " 1 " ; ListViewItem lvItem = nouveau ListViewItem (listViewData, 0 ); doubleBufferView1.Items.Add (lvItem);