我有以下代码:
List<string> list = SomeFunction();
this.myComboBox.DataSource = list;
出于某种原因,当列表只包含4个项目时,对DataSource的分配花费了大量的时间(大约1.4秒)。
知道为什么会这样吗?
修改:
SomeFunction()
在磁盘上的几个文件夹中查找是否存在特定的.xml文件,如果存在,则将包含的文件夹名称放入它返回的列表中。
调查:
我在DataSource分配周围调用DateTime.Now,每次返回约1400ms。这让我相信它纯粹是导致它的DataSource赋值。但是,我创建了一个虚拟列表;直接Add()
字符串。该数据源在~200ms内执行。所以也许它毕竟不是DataSource的赋值,而且与SomeFunction
有关。 然而,然后我尝试逐个插入字符串,并在~0ms内执行。
答案 0 :(得分:0)
它在SelectedIndexChanged
事件处理程序中,我正在加载文件。事实证明,对DataSource
成员的分配将自动更改SelectedIndex
(可能会返回0,如果存在),而调用Items.Add
则不会这样做。
在我的情况下,这是一个问题,因为我想手动选择要加载的项目,因此它加载了两次 - 一次是由于分配(不需要的)导致的事件而自动加载,一次是手动。
答案 1 :(得分:-3)
尝试将您的功能直接分配给ComboBox。
例如: this.myComboBox.DataSource = SomeFunction();