Вы можете использовать свойство DataSource , чтобы связать ваши исходные данные с ComboBox (например, со списком сущностей или DataTable и т. Д.), А затем установить для свойства DisplayMember
ComboBox значение ( строка) имя поля, которое вы хотите отобразить.
После того, как пользователь выбрал элемент, вы можете затем преобразовать SelectedItem
к исходному типу данных строки (Entity, DataRow и т. Д. - он все равно будет того же типа, что и вы), и затем вы можете получите 4 составных ключа для оригинального предмета.
Таким образом вы полностью избежите проблемы SelectedValue
.
Редактировать
Заполните следующим образом:
cmb_name.DisplayMember = "name";
cmb_name.DataSource = dt;
// Ignore ValueMember and Selected Value entirely
Когда вы хотите получить выбранный элемент
var selectedRow = (cmb_name.SelectedItem as DataRowView );
Теперь вы можете получить 4 значения вашего ПК, например, selectedRow["field1"], selectedRow["field2"], selectedRow["field3"] etc
Если, однако, вы имеете в виду, что вы хотите DISPLAY 4 столбца для пользователя (т. Е. Не иметь ничего общего с вашим ключом таблицы), то смотрите здесь Как связать ComboBox, чтобы элемент отображения concat из 2 полей источника данных?