Привязать элементы управления пользовательского интерфейса к объектам производных типов - PullRequest
0 голосов
/ 01 июля 2019

У меня есть список Doctors, Teachers и Drivers, все они получены из Individual.
В зависимости от того, на каком человеке находится курсор, я бы хотел отобразить профессию.специфические свойства.
Моя идея состояла в том, чтобы собрать всех этих парней в BindingList<Individual>, который был источником данных для IndividualsBindingSource.
. На событии IndividualsBindingSource.CurrentChanged я бы отобразил панель для профессии и создал бы Bindingsдля контроля профессии на лету, поэтому, когда он находится на водителе, отображается его водительское удостоверение и т. д.

Но в теле события CurrentChanged эта строка выдает ошибку времени выполнения:

tbLicense.DataBindings.Add(new System.Windows.Forms.Binding("Text", IndividualsBindingSource, "DriverLicense", true));

что, вероятно, означает, что он не может связать управление со свойством DriverLicense базового источника данных, потому что источник данных имеет базовый тип Individual.

Q1: Есть ли способ привязать элементы управления пользовательского интерфейса к свойствам унаследованных объектов при наличии всех объектов в BindingList<base type>?
Q2: Если нет, то какова наилучшая практика для отображения элементов управления, зависящих от объекта, позволяющихДвухстороннее связывание?

1 Ответ

0 голосов
/ 01 июля 2019

Хм, это было слишком просто ...
Вместо привязки к списку

tbLicense.DataBindings.Add(new System.Windows.Forms.Binding("Text", IndividualsBindingSource, "DriverLicense", true));

Мне пришлось привязать к конкретному объекту

tbLicense.DataBindings.Add(new System.Windows.Forms.Binding("Text", IndividualsBindingSource.Current, "DriverLicense", true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...