我有一个包含大约100个项目的列表框,以及一个用来在WindowsForms中选择/取消选择所有项目的复选框。
当我选择所有的项目时,程序会变慢,直到循环选择了每个项目,它需要4-5秒来选择所有的项目,选择真的非常慢(我有一台很好的机器,我已经在一个测试项目中测试了它,只有自己的列表框控件选择项目很慢)
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.只选择控件中的少量项创建它并不是很优雅……
发布于 2013-10-18 09:22:02
尝试在选择项目的循环中使用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()文档。
发布于 2013-11-14 16:51:39
有选择和取消选择所有项目的内置函数。我觉得他们速度很快。所以你可以在你的事件处理程序中尝试这样做...
myListBox.SelectAll();
或
myListBox.UnselectAll();
https://stackoverflow.com/questions/19439822
复制相似问题