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();
}
}
}
}
本文介绍了一种使用C#实现双缓冲ListView的方法,通过自定义ListView类并设置样式以提高界面刷新效率。文中提供了完整的代码示例,展示了如何创建双缓冲ListView组件,并在Form加载时通过多线程向ListView中添加大量项。
902

被折叠的 条评论
为什么被折叠?



