Q:http://topic.youkuaiyun.com/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();
}

DoubleBufferListViewlv
=
new
DoubleBufferListView();
private
void
Form1_Load(
object
sender,EventArgse)
...
{
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,同时通过线程安全的方式向其添加大量项。
3899

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



