改进列表框项目范围选择

时间:2013-10-18 00:54:27

标签: c# .net vb.net winforms listbox

我有一个包含大约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。不是很优雅创建它只是为了在控件中选择少量项目......

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();