Как назначить значение для поля со списком в VB.NET? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть выпадающий список с именем cbxType. Это поле со списком заполнено:

cbxType.DataSource = [Enum].GetValues(GetType(Customer.CustomerType))

Где Customer.CustomerType - перечисление:

Public Enum CustomerType
    Retail
    SelfEmployed
    Company
End Enum

Это прекрасно работает для заполнения поля, но как мне назначить данное значение? в поле со списком позже в коде?

Я пытался:

cbxType.ValueMember = 0

Но я получаю:

System.ArgumentException: 'Cannot bind to the new display member.
Parameter name: newDisplayMember'

1 Ответ

1 голос
/ 10 октября 2019

Когда ComboBox связан с коллекцией некоторой простой сущности, такой как enum X ..

  • , то в комбо отображается строка, возвращаемая X.ToString(), которая в этомcase возвращает имя текста перечисления, а
  • вещь, которая возвращается в качестве значения, из того, что показано, является комбо, это X.

Следовательно, чтобы изменить то, что показывает комбоустановите .SelectedValue комбо на объект типа X. X в этом случае будет одним из членов перечисления:

cbxType.SelectedValue = CustomerType.SelfEmployed

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

Например, если вы связали свой комбо с List(Of Person) и у человека есть, среди прочего, свойства FullName и Email, вы можете установить DisplayMember = "FullName", чтобы в списке отображалось «Джон Смит, Джейн Доу». .. "и т. д., и вы можете установить ValueMember = "Email", чтобы при выборе Джона Смита вызов SelectedValue мог вернуть вас" John.smith@example.com "

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

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