我有一个包含大约100个项目的列表框,以及一个用于在Windows窗体中选择/取消选择所有项目的复选框。
当我选择所有项目时程序变慢,直到循环选择了每个项目,选择所有项目需要4-5秒,选择非常慢(我有一台好机器,我已经测试过了)它进入一个测试项目,只是自己的Listbox控件选择项目很慢)
If Not ListBox1.SelectedItems.Count = ListBox1.Items.Count Then
For item As Integer = 0 To Me.ListBox1.Items.Count - 1
ListBox1.SetSelected(item, True)
Next
End If
是否存在任何改进控件上此项目选择的技巧?
我在选择项目时尝试禁用控件上的绘图但是浪费相同的4-5次来选择所有项目......
此外,我不认为创建新线程的选项仅用于选择控件的项目有两个原因,1。更新控件需要相同的时间,2。不是很优雅创建它只是为了在控件中选择少量项目......
答案 0 :(得分:1)
尝试在选择项目的循环周围使用BeginUpdate()
和EndUpdate()
,如下所示:
If Not ListBox1.SelectedItems.Count = ListBox1.Items.Count Then
' Stop the ListBox from drawing while items are added.
ListBox1.BeginUpdate()
For item As Integer = 0 To Me.ListBox1.Items.Count - 1
ListBox1.SetSelected(item, True)
Next
' End the update process and force a repaint of the ListBox.
ListBox1.EndUpdate()
End If
阅读BeginUpdate()和EndUpdate()文档以获取更多信息。
答案 1 :(得分:0)
有内置功能可以选择和取消选择所有项目。我认为他们很快。所以你可以在事件处理程序中尝试这个...
myListBox.SelectAll();
OR
myListBox.UnselectAll();