将对象中包含的数据动态绑定到窗体中的标签

本文关键字:窗体 标签 动态绑定 数据 包含 对象 | 更新日期: 2023-09-27 18:07:45

我的程序中有以下数据和对象:

一个DynamicObjectContainer,包含以下对象。

  1. MeasurementParameters : DataContainer (DataContainer是基类)

这个MeasurementParameters对象有许多公共属性,它们的名字我在运行时只知道。我还在DataContainer基类中设置了内部连接,这样,我可以使用易于使用的接口访问MeasurementParameters类中包含的属性值。

示例:假设我在MeasurementParameters中有一个名为"pumpspeed"的属性(类型字符串)。我可以使用这个函数访问该属性的值。

MeasurementParameters.GetStringValue("pumpspeed");

我通过在DataContainer对象的构造过程中使用反射在内部创建委托列表来实现这一点。(这是一次的事情。)

一切顺利。

现在我被困在我想在windows窗体的MeasurementParameters中显示这些值的地方。

因为我只在运行时知道属性名,所以我必须为用户提供一些方法来将属性名(仅由他在脚本文件中定义)映射到表单中的固定标签。因此,用户以以下格式将映射数据保存到表中。

Entry : "pumpspeed" "label22"

我想要一个快速有效的方法从数据库中获取这个映射,从MeasuremetParameters对象中获取所需的数据,并在windows窗体中显示它。

注意:如果这是一次操作,我有很多解决方案。这个问题是双重的。

  1. MeasurementParameters中有大量的属性(大约200)
  2. MeasurementParameters对象包含不断更新其属性的函数。所以我的windows窗体必须调用这些函数来更新MeasurementParameters对象数据,获取数据并在正确的标签中显示它。

同样,这应该以每秒2 -3次的周期发生。(理想情况下)

有谁能帮我设计一个解决方案吗?一般的对象结构和关系建议也会对我有帮助。

我可以张贴我正在使用的代码,如果需要。

将对象中包含的数据动态绑定到窗体中的标签

看不出有什么大问题

有Table ObjectID PropertyName ControlName

在打开表单/选择对象时,查询它们建立一个Dictionary由PropertyName键值的标签(从查询控件的名称查找MyForm.Controls.FindByName(Somename).添加一个OnPropertyChangedEvent到你的类抛出事件参数属性的名称,然后在窗体上添加一个处理程序

Mappings[e.PropertyName].Text = Object[e.PropertyName].GetStringValue;

可能需要对它进行调整以处理窗体上不是标签或面板的显示控件,但它应该直接处理。