Это winforms, wpf или asp.net? [обновление: ааа ... winforms ;-p]
winforms хочет, чтобы данные были IList
(или, косвенно, через IListSource
) - поэтому я предполагаю (из комментария), что вы используете winforms. Ни одна из встроенных коллекций, подобных словарю, не реализует IList
, но, честно говоря, это не имеет значения: если вы привязываете данные, объем, вероятно, довольно мал, поэтому обычный список должен подойти.
Лучший вариант - это что-то вроде List<T>
или BindingList<T>
, где T
имеет все свойства, с которыми вы хотите связать. Это вариант? Если вы застряли с 1.1 (поскольку вы упоминаете HashTable
, а не Dictionary<,>
), используйте ArrayList
.
Пример (на C #):
class MyData
{
public int Key { get; set; }
public string Text { get; set; }
}
[STAThread]
static void Main()
{
var data = new List<MyData>
{
new MyData { Key = 1, Text = "abc"},
new MyData { Key = 2, Text = "def"},
new MyData { Key = 3, Text = "ghi"},
};
ComboBox cbo = new ComboBox
{
DataSource = data,
DisplayMember = "Text",
ValueMember = "Key"
};
cbo.SelectedValueChanged += delegate {
Debug.WriteLine(cbo.SelectedValue);
};
Application.Run(new Form {Controls = {cbo}});
}