Как выбрать элемент списка по значению ValueMember - PullRequest
5 голосов
/ 07 февраля 2011

Если у меня есть два элемента с одинаковым DisplayMember, но с другим ValueMember, и я хочу программно выбрать один из двух элементов, как мне это сделать?

предметы:

123 -> Peter Pan
234 -> John Doe
345 -> Peter Pan

Я не могу выбрать последний Питер Пэн, выполнив

Listbox1.FindStringExact("Peter Pan");

потому что это возвращает только первый случай Следующее также не работает, потому что оно только устанавливает выбранный элемент, но не показывает его в списке:

Listbox1.SelectedItem = dataTable.Rows.Find(345);

Кто может помочь мне с этим?

Обновление:

Сам нашел дополнительную информацию, список отсортирован, поэтому, когда я обновляю DataTable (который используется для заполнения списка), список восстанавливается, и кажется, что он выбирает элемент, который был вместо редактируемого элемента.

Listbox1.FindStringExact работает только в том случае, если DisplayMember отличается

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Вы можете использовать SelectedValue вашего элемента управления списком:

Listbox1.SelectedValue = 345;
1 голос
/ 07 февраля 2011

Вы должны назначить данные через свойство DataSource элемента управления ListBox, а не через Items.Add.После этого вы можете использовать ValueMember для выбора элементов:

listBox1.DataSource = GetPeople();
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";

// Now you can use
listbox1.SelectedValue = 345;

UPDATE: Items является членом класса ListBox, но SelectedValue является свойством ListControl, которое может использовать только DataSource.

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