使用委托从后台工作者添加listviewitem

时间:2014-08-04 15:52:15

标签: vb.net listview delegates

我使用后台工作程序使用委托将图像列表中的图像添加到列表视图中,因为我想使用后台工作程序的Async方法加载图像。我不希望我的应用程序在加载100到4000张图像时冻结。我的问题是listview没有像我想的那样逐个添加图像。它什么都没有,然后突然出现了图片。问题是用户将等待很长时间,想知道是否有任何图片正在加载。我需要逐个添加它们。

这是我的代码:

    j = 0
    For j = 0 To lstPhotos.Count - 1
        Dim delAddListViewItem As AddListViewItemDelegate = AddressOf AddListViewItem
        delAddListViewItem.Invoke("", j)
    Next

Private Delegate Sub AddListViewItemDelegate(text As String, index As Integer)

Private Sub AddListViewItem(text As String, index As Integer)
    If ListViewMain.InvokeRequired Then
        Dim delAddListViewItem As New AddListViewItemDelegate(AddressOf AddListViewItem)
        ListViewMain.Invoke(delAddListViewItem, New Object() {text, index})
    Else
        Dim lvi As New ListViewItem(text)
        ListViewMain.Items.Add(lvi.Text, index)
    End If
End Sub

如何让listview单独添加图像而不是一次添加所有图像? .Update和.Refresh什么都不做。我还应该补充一点,listview控件以编程方式添加到tabcontrol中,并且它与主窗体一起被双缓冲。

0 个答案:

没有答案