У меня Dictionary (Of long, Class)
. Класс имеет несколько свойств. И я хочу просмотреть данные этого словаря в DataGridView. Итак, просто я использовал:
DataGridView1.DataSource = Dictionary.Values.ToArray
Теперь свойства внутри объектов класса для записей внутри словаря постоянно обновляются (слишком часто). И я хочу напрямую отразить эти обновления в DataGridView.
Я считаю, что использование DataGridView1.DataSource = Dictionary.Values.ToArray
каждый раз неэффективно и потребует большой вычислительной мощности. Как сделать словарь привязываемым (например, в DataTables)? Мне это нужно в VB.NET, я попытался использовать Linq для решения этой проблемы (здесь https://stackoverflow.com/a/855954/2546348) Но, тем не менее, я не видел новых обновлений для DataGridView.
Какие-либо предложения? Как лучше всего это реализовать?
INotifyPropertyChanged
. Когда закончите, вы можете привязать свой[Dictionary].Values
к BindingSource, а затем привязать DGV к BindingSource (установив.DataSource = [TheBindingSource]
DGV). Любое изменение значений словаря будет немедленно отражено в DGV. - person Jimi   schedule 11.11.2019[Dictionary].Values
, не является статическим (базовая ссылка ValueCollection будет обновлена при добавлении / удалении в / из Словаря), он не вызывает уведомления об изменении списка (на самом деле есть средства, но я не буду предлагаю любое :). Вы можете: 1) Добавить новые элементы в BindingSource (объектTValue
сBindingSource.Add([object])
), при необходимости синхронизировать словарь. 2) Создайте свой собственный класс, который наследуется от Dictionary ‹TKey, TValue› и реализует интерфейсIBindingList
. 3) Используйте DataTable вместо словаря - person Jimi   schedule 12.11.2019Dictionary<TKey, TValue>
, но предоставлять свою собственную форму ValueCollection при привязке к данным через методыIBindingList
и его общепринятые / интерпретируемые уведомления об изменении списка. - person Jimi   schedule 12.11.2019