C#:Вопрос о привязке хэш-таблицы к полю со списком
-
05-07-2019 - |
Вопрос
public class FontType
{
...
public String Name { get { return _name; } }
public String DisplayName { get { return _displayName; } }
public Font UseFont { get { return _font; } }
}
bindFontTypes.DataSource = availableFonts;
comboFontType.DataSource = bindFontTypes;
comboFontType.ValueMember = "Key";
comboFontType.DisplayMember = ...???;
Здесь, bindFontTypes
является источником привязки. availableFonts
представляет собой хэш-таблицу, где ключами являются строки, а значениями - объекты FontType.Для comboFontType.DisplayMember
Я хочу использовать свойство objects .DisplayName объектов.Как мне это указать?Возможно ли это?
Решение
Это может сработать, если вы установите
comboFontType.DisplayMember = "Value"; // FontType
и перегрузка ToString()
для FontType
.
В качестве альтернативы toString() вы можете обработать событие Format в combobox.
Но я даже не уверен, работает ли привязка данных таким образом.
Другие советы
Используя DisplayMember = "Value.DisplayName"
Я получаю последнюю добавленную в хэш-таблицу...Я работаю над получением их всех....
Это то, что я сделал ... но для привязки нужно получить только последний элемент в хэш-таблице....
BindingSource src = new BindingSource();
src.DataSource = new Hashtable
{
{
"blah",
new FontType
{
Name = "newFont",
DisplayName = "new Font"
}
},
{
"another",
new FontType
{
Name = "anotherFont",
DisplayName = "another Font"
}
}
};
comboBox1.DataSource = src;
comboBox1.ValueMember = "Key";
comboBox1.DisplayMember = "Value.DisplayName";