1

我在 WindowsForms 中有一个包含大约 100 个项目的列表框和一个用于选择/取消选择所有项目的复选框。

当我选择所有项目时程序变慢,直到循环选择了每个项目,选择所有项目需要 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.创建它不是很优雅fo 选择控件中的少量项目...

4

2 回答 2

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()文档以获取更多信息。

于 2013-10-18T01:22:01.560 回答
0

有内置功能可以选择和取消选择所有项目。我认为他们很快。所以你可以在你的事件处理程序中尝试这个......

myListBox.SelectAll();

myListBox.UnselectAll();

于 2013-11-14T08:51:39.357 回答