2015-03-17 3 views
1

Я пытаюсь инициализировать ComboBox из словаря следующим образом:Загрузить ComboBox из словаря с BindingSource дает ArgumentNullException

Dictionary<string, int> TestDictionary = new Dictionary<string, int> 
{ 
    {"Text1", 1}, 
    {"Text2", 2}, 
    {"Text3", 3} 
}; 

testComboBox.DataSource = new BindingSource(TestDictionary, null); 

Но это бросает следующее исключение:

ArgumentNullException

+0

Возможной дубликату Смотрите здесь [связывание-выпадающей-использование-словарь, как-в- DataSource] [1] [1]: http://stackoverflow.com/questions/6412739/binding-combobox-using-dictionary-as-the-datasource –

ответ

0

Почему вы привязываете его к нулевому? https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource%28v=vs.110%29.aspx Вы хотите этот парень

BindingSource(IContainer) 

это не один

BindingSource(Object, String) 

С

public BindingSource(
    Object dataSource, 
    string dataMember 
) 

DataMember используется вашим списком.

dataMember 
Type: System.String 
The specific column or list name within the data source to bind to. 

Или дайте ему свое имя.

UPD/коррекция:

Согласно комментарию вверх верхним, необходимо сопоставить эту два:

testComboBox.DisplayMember = "Value"; 
testComboBox.ValueMember = "Key"; 
+0

Я попытался это, но Collections.Generic.Dictionary не реализует ComponentModel.IC интерфейс пользователя. – jamesallman