Combobox SelectedIndex не устанавливается при использовании списка IndexOf - PullRequest
0 голосов
/ 25 декабря 2018

Я создаю комбинированный список программно следующим образом:

var cbo = new ComboBox {
    DataSource = mylist,
    SelectedIndex = mylist.IndexOf(myvalue)
};

Я не устанавливаю ValueMember, так что значением будет сам объект.Когда я делаю вышеупомянутое, я получаю следующее исключение в строке SelectionIndex:

InvalidArgument = Значение '3' недопустимо для 'SelectedIndex'.Имя параметра: SelectedIndex

Это потому, что поле со списком все еще создается, и, следовательно, DataSource все еще не заполнен?Если да, как правильно установить индекс?

1 Ответ

0 голосов
/ 25 декабря 2018

Databiding не будет работать, пока элемент управления не станет видимым.Поэтому вам нужно изменить код на:

var mylist = Enumerable.Range(1, 5).ToList();
var myvalue = 2;
var cbo = new ComboBox();
cbo.HandleCreated += (obj, args) =>
{
    BeginInvoke(new Action(() =>
    {
        cbo.DataSource = mylist;
        cbo.SelectedIndex = mylist.IndexOf(myvalue);
    }));
};
this.Controls.Add(cbo);

Затем, как только элемент управления станет видимым, будет запущен код инициализации и ComboBox будет заполнен элементами источника данных, и его выбранный индекс будет установленкак и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...