Установите как свойство Text, так и значение ComboBox во время разработки - PullRequest
3 голосов
/ 28 апреля 2010

Мне нужно добавить следующие элементы в поле со списком.

Значение DisplayText

Mpost Опубликовано

Call Calling

RScan Re-Scan

Эти элементы довольно статичны и не извлекаются ни из одной базы данных ... Следовательно, подумайте о назначении их во время разработки.

Я не могу использовать свойство Items, так как оно запрашивает только одно значение для элемента ... Не могли бы вы помочь.

PS: Если вы предлагаете BindingSource, не могли бы вы привести пример. Я не смог найти его.

Ответы [ 2 ]

14 голосов
/ 28 апреля 2010

Вы можете использовать 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 - довольно приятный маленький элемент управления. Но дело в том, что он предназначен для получения любого легитимного источника поддержки, а не только таблицы, списка или коллекции элементов с ровно двумя свойствами. Поскольку он может принимать любой источник данных, концепция строгого сопряжения ключ / значение несколько лишена своего особого статуса. Поэтому не имеет особого смысла предоставлять какой-либо специальный графический интерфейс для добавления элементов с двумя свойствами (хотя это может быть удобно в данной конкретной ситуации).

0 голосов
/ 28 апреля 2010
private class Data
{
    public string Name { get; set; }
    public string Value { get; set; }
}
public Form1()
{
    InitializeComponent();
    comboBox1.Items.Add(new Data{Name = "Test", Value = "Hello"});
    comboBox1.Items.Add(new Data {Name = "Test2", Value = "World"});
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "Value";
}

Вы определяете свойство, которое будет использоваться для отображения, как DisplayMember, а свойство, которое будет использоваться для значения, как ValueMember.

привет Даниил

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