Назначение ComboBox.DataSource принимает возраст - PullRequest
1 голос
/ 31 августа 2010

У меня есть следующий код:

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

По какой-то причине назначение DataSource занимает удивительное количество времени (около 1,4 секунды), когда список содержит только 4 элемента.

Есть идеи, почему это так?

Редактировать:

SomeFunction() ищет в нескольких папках на диске наличие определенного XML-файла, и еслион существует, помещает содержащее имя папки в список, который он возвращает.

Расследование:

Я вставил вызов DateTime.Now вокруг назначения DataSource, ивозвращается в ~ 1400 мс каждый раз.Это наводит меня на мысль, что причиной этого является только назначение источника данных.Тем не менее, я создал фиктивный список;Add() Строки напрямую к нему.Этот источник данных выполняется за ~ 200 мс.Так что, возможно, это не назначение DataSource, и оно как-то связано с SomeFunction. Однако , затем я попытался просто вставить строки одну за другой, и это выполняется за ~ 0 мс.

Ответы [ 2 ]

0 голосов
/ 31 августа 2010

Это было в обработчике события SelectedIndexChanged, где я загружал файл.Оказывается, что присвоение члену DataSource автоматически изменит SelectedIndex (предположительно обратно на 0, если оно существует), тогда как вызов Items.Add не сделает этого.

В моем случае этобыла проблема, потому что я хотел вручную выбрать, какой элемент загружать, и поэтому он загружался дважды - один раз автоматически из-за события, вызванного назначением (нежелательно), и один раз вручную.

0 голосов
/ 31 августа 2010

Попробуйте напрямую назначить вашу функцию ComboBox.

например: this.myComboBox.DataSource = SomeFunction ();

...