Как решить проблему низкой эффективности сцинтилляционных элементов управления ListView
Я сделал тест,я хочу следить за увеличением индекса строки listview,поэтому я использую следующий код:
<pre> Thread thFollowListView = new Thread(new ThreadStart(FollowListViewRowIndex)); thFollowListView.Start(); int iRowIndex = 0; private void FollowListViewRowIndex() { while (true) { this.listview.Invoke((EventHandler)delegate { listview.Items[iRowIndex].Selected = true; listview.Items[iRowIndex].Focused = true; if (iRowIndex + 20 < listview.Items.Count) { listview.Items[iRowIndex + 20].EnsureVisible(); } listview.Update(); }); iRowIndex++; Thread.Sleep(100); } }
я хочу показать по крайней мере 20 строк,поэтому я использую
listview.Items[iRowIndex + 20].EnsureVisible();
но элемент управления listview мерцает, как я могу решить этот вопрос?
Что я уже пробовал:
public CustomListView() : base() { base.OwnerDraw = true; //this.DoubleBuffered = true; SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); UpdateStyles(); }
Я использую атрибут double buffer, но это бесполезно.
Я использую делегат c#, и я тоже не полезен.