ComboBox.DataSource赋值年龄

时间:2010-08-31 05:45:27

标签: c# .net optimization combobox

我有以下代码:

List<string> list = SomeFunction();
this.myComboBox.DataSource = list;

出于某种原因,当列表只包含4个项目时,对DataSource的分配花费了大量的时间(大约1.4秒)。

知道为什么会这样吗?

修改:

SomeFunction()在磁盘上的几个文件夹中查找是否存在特定的.xml文件,如果存在,则将包含的文件夹名称放入它返回的列表中。

调查:

我在DataSource分配周围调用DateTime.Now,每次返回约1400ms。这让我相信它纯粹是导致它的DataSource赋值。但是,我创建了一个虚拟列表;直接Add()字符串。该数据源在~200ms内执行。所以也许它毕竟不是DataSource的赋值,而且与SomeFunction有关。 然而,然后我尝试逐个插入字符串,并在~0ms内执行。

2 个答案:

答案 0 :(得分:0)

它在SelectedIndexChanged事件处理程序中,我正在加载文件。事实证明,对DataSource成员的分配将自动更改SelectedIndex(可能会返回0,如果存在),而调用Items.Add则不会这样做。

在我的情况下,这是一个问题,因为我想手动选择要加载的项目,因此它加载了两次 - 一次是由于分配(不需要的)导致的事件而自动加载,一次是手动。

答案 1 :(得分:-3)

尝试将您的功能直接分配给ComboBox。

例如: this.myComboBox.DataSource = SomeFunction();