投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/8/16 22:11:30
>一括で登録するには、.Items.AddRange を使います。
.Items.Add を BeginUpdate / EndUpdate 併用で呼び出した場合は、
.Items.AddRange と同等の時間で済みます。
(BeginUpdate / EndUpdate なしでは大きな差が付きますが)

これらの方法をとっても十分な速度向上が見込めない場合には、先にも書いたように
VirtualMode を利用するか、別のコントロールで代用するなどといった大幅な修正が必要になります。


> Dim ListViewItemArray(UBound(ReadedTxt) - 1) As ListView.ListViewItemCollection
> Object_To.Items.AddRange(ListViewItemArray)  '※1 

AddRange メソッドの引数定義は、
 Public Sub AddRange ( items As ListViewItemCollection )
もしくは
 Public Sub AddRange ( items() As ListViewItem )
の 2 種類です。

しかし作成されたコードでは、
 Public Sub AddRange ( items() As ListViewItemCollection )
を呼び出そうとしていることになってしまいますね。


> Items.AddRangeの使い方、もしくはItems.AddRangeのサンプルをお願いできますでしょうか?

Public Class Form1

    Private sampleData() As String = Enumerable.Range(0, 50000).Select(Function(i) i.ToString("000000")).ToArray()

    Private Sub Button1_Click() Handles Button1.Click
        ListView1.Clear()

        Dim sw = Stopwatch.StartNew()
        ListView1.BeginUpdate()

        If CheckBox1.Checked Then
            '一括登録 
            Dim items As New List(Of ListViewItem)()
            For Each item In sampleData
                items.Add(New ListViewItem(item))
            Next
            ListView1.Items.AddRange(items.ToArray())
        Else
            '繰り返し登録 
            For Each item In sampleData
                ListView1.Items.Add(item)
            Next
        End If

        ListView1.EndUpdate()
        sw.Stop()

        MessageBox.Show(sw.Elapsed.ToString(), "処理時間")
    End Sub

    Private Sub Button2_Click() Handles Button2.Click
        ListBox1.Items.Clear()

        Dim sw = Stopwatch.StartNew()
        ListBox1.BeginUpdate()

        If CheckBox1.Checked Then
            '一括登録 
            ListBox1.Items.AddRange(sampleData)
        Else
            '繰り返し登録 
            For Each item In sampleData
                ListBox1.Items.Add(item)
            Next
        End If

        ListBox1.EndUpdate()
        sw.Stop()

        MessageBox.Show(sw.Elapsed.ToString(), "処理時間")
    End Sub
End Class