这是我用于填充 ListView 的代码:
Dim itms As ListViewItem
Dim itm As New List(Of ListViewItem)
Dim itemcoll(2) As String
Dim strQ As String = String.Empty
strQ = "SELECT COLOR_CODE,DESC from COLORS"
cmd = New MySqlCommand(strQ, con)
Try
con.Open()
rs = cmd.ExecuteReader
lstview.Items.Clear()
Application.DoEvents()
lstview.SuspendLayout()
lstview.BeginUpdate()
lstview.Visible = False
While rs.Read
itemcoll(0) = IIf(Not IsDBNull(rs.Item("COLOR_CODE")), rs.Item("COLOR_CODE"), 0)
itemcoll(1) = IIf(Not IsDBNull(rs.Item("DESC")), rs.Item("DESC"), 0)
itms = New ListViewItem(itemcoll)
'lstview.Items.Add(itms)
itm.Add(itms)
End While
rs.Close()
lstview.Items.AddRange(itm.ToArray)
lstview.EndUpdate()
lstview.Visible = True
lstview.ResumeLayout()
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
这段代码对于填充 10,000+ 行很快,但是如果我填充超过 50, 000,它就很慢,填充 ListView 需要 2 秒,速度正常还是慢?
还有什么其他技术可以加速填充?我使用了一些方法来提高填充速度。
感谢您的帮助。
最佳答案
试试这个示例。有时不必要地写入占位符变量会降低性能,但理论上执行时间应该不会有太大差异。
Dim itm As New List(Of ListViewItem)
Dim strQ As String = "SELECT COLOR_CODE,DESC from COLORS"
cmd = New MySqlCommand(strQ, con)
lstview.Items.Clear()
Application.DoEvents()
lstview.SuspendLayout()
lstview.BeginUpdate()
lstview.Visible = False
Try
con.Open()
rs = cmd.ExecuteReader
While rs.Read
itm.Add(New ListViewItem({Convert.ToString(rs.Item("COLOR_CODE")),
Convert.ToString(rs.Item("DESC"))}))
End While
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
lstview.Items.AddRange(itm)
lstview.EndUpdate()
lstview.Visible = True
lstview.ResumeLayout()
End Try
关于mysql - 在 vb.net 中使用 mysql 填充 ListView 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18479121/