改进列表框项范围选择
本文关键字:范围 选择 列表 | 更新日期: 2023-09-27 18:35:48
我有一个包含大约 100 个项的列表框,以及一个用于在 WindowsForms 中选择/取消选择所有项的复选框。
当我选择所有项目时,程序会变慢,直到循环选择每个项目,选择所有项目需要 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.创建它不是很优雅只是在控件中选择少量项目...
尝试在选择项目的循环中使用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() 文档了解更多信息。
有内置函数来选择和取消选择所有项目。我认为它们非常快。因此,您可以在事件处理程序中尝试此操作...
myListBox.SelectAll();
或
myListBox.UnselectAll();