将对象中包含的数据动态绑定到窗体中的标签
本文关键字:窗体 标签 动态绑定 数据 包含 对象 | 更新日期: 2023-09-27 18:07:45
我的程序中有以下数据和对象:
一个DynamicObjectContainer,包含以下对象。
-
MeasurementParameters : DataContainer
(DataContainer是基类)
这个MeasurementParameters
对象有许多公共属性,它们的名字我在运行时只知道。我还在DataContainer
基类中设置了内部连接,这样,我可以使用易于使用的接口访问MeasurementParameters
类中包含的属性值。
示例:假设我在MeasurementParameters
中有一个名为"pumpspeed"的属性(类型字符串)。我可以使用这个函数访问该属性的值。
MeasurementParameters.GetStringValue("pumpspeed");
我通过在DataContainer
对象的构造过程中使用反射在内部创建委托列表来实现这一点。(这是一次的事情。)
一切顺利。
现在我被困在我想在windows窗体的MeasurementParameters
中显示这些值的地方。
因为我只在运行时知道属性名,所以我必须为用户提供一些方法来将属性名(仅由他在脚本文件中定义)映射到表单中的固定标签。因此,用户以以下格式将映射数据保存到表中。
Entry : "pumpspeed" "label22"
我想要一个快速有效的方法从数据库中获取这个映射,从MeasuremetParameters
对象中获取所需的数据,并在windows窗体中显示它。
注意:如果这是一次操作,我有很多解决方案。这个问题是双重的。
-
MeasurementParameters
中有大量的属性(大约200) -
MeasurementParameters
对象包含不断更新其属性的函数。所以我的windows窗体必须调用这些函数来更新MeasurementParameters
对象数据,获取数据并在正确的标签中显示它。
同样,这应该以每秒2 -3次的周期发生。(理想情况下)
有谁能帮我设计一个解决方案吗?一般的对象结构和关系建议也会对我有帮助。
我可以张贴我正在使用的代码,如果需要。
看不出有什么大问题
有Table ObjectID PropertyName ControlName
在打开表单/选择对象时,查询它们建立一个Dictionary
由PropertyName键值的标签(从查询控件的名称查找MyForm.Controls.FindByName(Somename).
添加一个OnPropertyChangedEvent
到你的类抛出事件参数属性的名称,然后在窗体上添加一个处理程序
Mappings[e.PropertyName].Text = Object[e.PropertyName].GetStringValue;
可能需要对它进行调整以处理窗体上不是标签或面板的显示控件,但它应该直接处理。