我的WinForms UI包含一个带有两个标签页的标签控件。在一个选项卡上,我需要以允许我的用户在列表中添加,编辑和删除字符串的方式显示最多100,000个字符串的列表。在第二个选项卡上,我需要在第一个选项卡上显示字符串的“只读”副本。我还需要第二个选项卡上的控件,它允许用户将字符串从“只读”列表复制到第二个不相关的列表中。在WinForms列表框/列表视图控件中显示大量字符串
我目前有一个数组中的100k字符串,我的第一个想法是使用列表框来显示它们。我可以遍历数组并单独将字符串添加到第一个选项卡上的列表框。如果我使用SuspendLayout()和BeginUpdate(),则需要大约1.5秒的时间来显示。不幸的是,当我向列表框中添加超过65k条目时(显然这是在Vista附近引入的列表框控件中的一个错误),存在垂直滚动条问题。由于字符串数据没有绑定到列表框,我基本上将同样的整个数据集添加到另一个列表框中的第二个选项卡上。现在,如果启动我的应用程序,请等待将字符串添加到列表框中,然后尝试选择第二个选项卡,但性能非常慢,等待第二个选项卡变得响应。我假设这与列表框中的数据量有关。无论如何,一旦第二个选项卡变得响应,我可以在两个选项卡页面之间切换,延迟时间要少得多。
作为一个测试,我尝试将两个列表框绑定到数组,但是从性能角度来看它没有任何区别。无论如何,滚动错误可能会让列表框无法使用。所以然后我用单个隐藏列标题以列表模式尝试列表视图控件。当我将字符串数据添加为单独的ListViewItems时,性能没有太大的不同。我试着将两个listview控件绑定到我的数组,但它看起来像listview控件不支持设计时数据绑定,我不确定如果我试图自己实现它,它会有很大的不同。
我知道100,000个字符串(最大)是一个用户要处理的大量数据,但这是一个要求,使用时能够看到应用程序中的所有字符串数据(最坏的情况是我的第一件事QA团队将开始测试!)。是否有另一种控制方式可以适用于我需要的大量数据和功能?或者我只是想解决这个问题?