Как привязать объект словаря к представлению сетки Windows Forms - PullRequest
1 голос
/ 07 июня 2011

Как связать объект словаря с сеткой данных в Windows Forms?

 Dictionary<string, string> result = new Dictionary<string, string>();
 result.Add(arrFilename[i].fileName,"Found");
 dataGridView1.DataSource = result;

Сетка dataview не привязывается. Какое решение?

Ответы [ 3 ]

3 голосов
/ 07 июня 2011

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).

1 голос
/ 07 июня 2011

Вы не можете использовать словарь.Вместо этого используйте массив DictionaryEntry.Я думаю, потому что каждый элемент в словаре List не имеет известного типа.

Он не показывает ошибки, но если вы установите в качестве словаря источник данных combobox, он говорит, что он не реализует IList.

1 голос
/ 07 июня 2011

Это не просто, так как объект словаря не реализует интерфейс IList, к которому в datagridview ожидают источники.

Это может помочь:

DataGridView привязан к словарю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...