Вы можете использовать BindingList<KeyValuePair<string, string>>
:
var items = new BindingList<KeyValuePair<string, string>>();
items.Add(new KeyValuePair<string, string>("Mpost", "Posted"));
items.Add(new KeyValuePair<string, string>("Call", "Calling"));
items.Add(new KeyValuePair<string, string>("RScan", "Re-Scan"));
myComboBox.DataSource = items;
myComboBox.ValueMember = "Key";
myComboBox.DisplayMember = "Value";
Я не думаю, что вы найдете решение, намного более простое или более простое, чем это. Просто поместите это в конструктор вашей формы (после InitializeComponent
- и, кстати, я бы прикрепил любые обработчики событий, которые вы намереваетесь добавить к ComboBox после этой точки в коде), и вы хорошо.
Что касается того, почему нет даже более простого способа: честно, я бы сказал, что это типичный пример того, как решения становятся более сложными, чем гибче вы пытаетесь их сделать. Не пойми меня неправильно; ComboBox - довольно приятный маленький элемент управления. Но дело в том, что он предназначен для получения любого легитимного источника поддержки, а не только таблицы, списка или коллекции элементов с ровно двумя свойствами. Поскольку он может принимать любой источник данных, концепция строгого сопряжения ключ / значение несколько лишена своего особого статуса. Поэтому не имеет особого смысла предоставлять какой-либо специальный графический интерфейс для добавления элементов с двумя свойствами (хотя это может быть удобно в данной конкретной ситуации).