У меня есть Dictionary
, который содержит элементы и цены. Элементы уникальны, но медленно добавляются и обновляются через время жизни приложения (то есть я не знаю строки элемента заранее). Я хотел бы привязать эту структуру к DataGridView, поэтому я могу показывать обновления в моей форме, например:
Dictionary<string, double> _priceData = new Dictionary<string, double>();
BindingSource _bindingSource = new BindingSource();
dataGridView1.DataSource = _bindingSource;
_bindingSource.DataSource = _priceData;
Но не может, поскольку Dictionary
не реализует IList
(или IListSource
, IBindingList
, или IBindingListView
).
Есть ли способ достичь этого? Мне нужно сохранить уникальный список элементов, но также обновить цену для существующего элемента, поэтому Dictionary
- идеальная структура данных, я думаю, но я не могу найти способ отображения данных в моей форме.
Update:
Предложение Marc ниже работает очень хорошо, но я все еще не уверен, как обновить DataGridView во время выполнения.
У меня есть переменная уровня класса:
private DictionaryBindingList<string, decimal> bList;
Затем укажите, что в Main()
:
bList = new DictionaryBindingList<string,decimal>(prices);
dgv.DataSource = bList;
Затем во время выполнения программы, если в словарь добавлена новая запись:
prices.Add("foobar", 234.56M); bList.ResetBindings();
Я думал, что обновит DataGridView. Почему бы и нет?