首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进列表框项目范围选择

改进列表框项目范围选择
EN

Stack Overflow用户
提问于 2013-10-18 08:54:27
回答 2查看 312关注 0票数 1

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

当我选择所有的项目时,程序会变慢,直到循环选择了每个项目,它需要4-5秒来选择所有的项目,选择真的非常慢(我有一台很好的机器,我已经在一个测试项目中测试了它,只有自己的列表框控件选择项目很慢)

代码语言:javascript
复制
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.只选择控件中的少量项创建它并不是很优雅……

EN

回答 2

Stack Overflow用户

发布于 2013-10-18 09:22:02

尝试在选择项目的循环中使用BeginUpdate()EndUpdate(),如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-11-14 16:51:39

有选择和取消选择所有项目的内置函数。我觉得他们速度很快。所以你可以在你的事件处理程序中尝试这样做...

myListBox.SelectAll();

myListBox.UnselectAll();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19439822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档