DataGridView.DataSource
нужен объект, который реализует IList
, IListSource
, IBindingList
или IBindingListView
.
, поскольку ни один из Dictionary
, Dictionary.ValueCollection
или Dictionary.KeyCollection
не реализует его, вы не можете привязать к нему напрямую.
Если вы просто хотите получить список значений только для чтения, вы можете добавить их к List
и привязать к нему, например (при условии, что ваш словарь использует int и string кактипы ключей и значений):
List<KeyValuePair<int,string>> list = new List<KeyValuePair<int,string>>();
list.AddRange( myDict.Values);
DataGridView1.DataSource = list;
Если вы хотите сделать что-то более умное, тогда самое простое решение - не использовать Dictionary
в качестве структуры данных.Вы потенциально можете создать подкласс Dictionary
и реализовать один из привязываемых интерфейсов, но это, вероятно, больше усилий и сложностей, чем необходимо.
См. DataGridView, привязанный к универсальному словарю Рори (форум MSDN).