2015-03-17 1 views
1

Je suis en train d'initialiser un ComboBox à partir d'un dictionnaire comme suit:Charger un ComboBox Dictionnaire avec BindingSource donne un ArgumentNullException

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

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

Mais cela jette l'exception suivante:

ArgumentNullException

+0

double possible, Voir ici [Reliure-combobox-en utilisant-dictionnaire en-the source de données] [1] [1]: http://stackoverflow.com/questions/6412739/binding-combobox-using-dictionary-as-the-datasource –

Répondre

0

Pourquoi le reliez-vous à un null? https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource%28v=vs.110%29.aspx Vous voulez ce type

BindingSource(IContainer) 

pas celui-ci

BindingSource(Object, String) 

Depuis

public BindingSource(
    Object dataSource, 
    string dataMember 
) 

DataMember est utilisé par votre combobox.

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

Ou donnez-lui un nom propre.

UPD/Correction:

Selon le commentaire en haut, vous devez mapper ces deux:

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

J'ai essayé mais Collections.Generic.Dictionary n'implémente pas ComponentModel.IC interface de l'ontainer. – jamesallman