将UI控件绑定到派生类型的对象

时间:2019-07-01 16:04:57

标签: c# winforms

我有一个DoctorsTeachersDrivers的列表,它们都是从Individual派生的。
根据光标所在的人,我想显示特定于行业的属性。
我的想法是将所有这些人都放在一个BindingList<Individual>的数据源IndividualsBindingSource中。
IndividualsBindingSource.CurrentChanged事件中,我将显示一个特定于职业的面板,并为飞行中的特定于职业的控件创建Bindings,以便在驾驶时显示其驾驶执照等。

但是在CurrentChanged事件的主体中,此行给出了运行时错误:

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

这可能意味着它无法将控制绑定到基础数据源的DriverLicense属性,因为该数据源是基本类型Individual

问题1:是否可以将UI控件绑定到继承的对象属性,同时将所有对象都放在BindingList<base type>中?
问题2:如果不是,那么显示允许2向绑定的特定于对象的控件的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

嗯,太简单了...
而不是绑定到列表

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