我想將項目添加到列表視圖控件。這是一段代碼:在ListView中添加項目太慢C#
this.lView.ListViewItemSorter = null;
ListViewItem[] lvitems = new ListViewItem[ListMyObjects.Count];
int index = 0;
foreach (MyObject object in ListMyObjects)
{
ListViewItem item = new ListViewItem();
item.Text = object.Name;
lvitems[index++] = item;
}
this.lView.BeginUpdate();
this.lView.Items.AddRange(lvitems); // Slow in here with debugger
this.lView.EndUpdate();
我只增加了約1000個項目,但它是非常緩慢的。花費大約15秒完成。 爲什麼有人知道原因?預先感謝。
編輯:
我以前定製的列表視圖。
public partial class MyListView: ListView
{
public MyListView()
{
InitializeComponent();
this.View = View.Details;
this.FullRowSelect = true;
this.DoubleBuffered = true;
}
private bool mCreating;
private bool mReadOnly;
protected override void OnHandleCreated(EventArgs e)
{
mCreating = true;
base.OnHandleCreated(e);
mCreating = false;
}
public bool ReadOnly
{
get { return mReadOnly; }
set { mReadOnly = value; }
}
protected override void OnItemCheck(ItemCheckEventArgs e)
{
if (!mCreating && mReadOnly) e.NewValue = e.CurrentValue;
base.OnItemCheck(e);
}
}
我這樣做是因爲我不想在我使用多線程時掛起。我不知道這對它有什麼影響?
哪一行是較慢的部分? (使用調試器) – SLaks 2011-12-20 03:39:16
我認爲是這樣的...... – SLaks 2011-12-20 03:42:09
我用整數值試過了,它以可接受的速度運行。 (<2秒)。也許它與你的對象有關? – Matthias 2011-12-20 03:42:34