【发布时间】:2016-01-03 23:09:21
【问题描述】:
我正在构建一些使用 OPC 来控制某些工业自动化的应用程序。我已经决定为我将使用的标准事物(例如按钮和文本框)创建一些自定义控件可能是一个好主意。我的主要原因之一是我觉得最终对象是一种理想的模式,即按钮是保存有关它所引用的 OPC 项目信息的人,否则在典型的应用程序中,我的 Form 类会被我的大量变量污染头脑的范围比他们应该的更全球化。然后我开始使用按钮的 Tag 属性,但这需要一些对于每个实例都相同的开销代码。我觉得正确的做法是子类化我想使用的控件并提供属性来配置每个控件。
考虑到这种情况,我真正的问题是这个。为了使其尽可能便携,我决定应该有一个属性来定义 OPC 组。我声明了这样的属性
public class OPCButton : Button
{
[Category("OPC")]
public OPCConnectedGroup
{
get { return _OPCGroup; }
set { _OPCGroup = value; }
}
}
当我添加控件时,这会显示在属性列表中,但即使我的 Form1 包含,我也无法绑定此属性
public OPCConnectedGroup Connection1 = new OPCConnectedGroup();
我已经决定解决这个问题的方法可能是创建一个额外的控件,例如 OPCGrp,可以添加到表单中,然后控件可以引用它。为了进行测试,我添加了一个 Button 类型的属性,当我添加它并浏览到该属性时,它确实为我提供了表单上所有按钮的选项。我对这种方法没有什么大问题我只是想确保我遵循原型模式,因为我将负责维护控制库但并不总是实施并且我试图将其简化为 1-2 步过程来实施一个控件。
谢谢 马特
【问题讨论】:
-
OPCConnectedGroup这个类是你做的什么类型的? -
正确。它实际上将是一个通用接口,如“IOPCConnectedGroup”,并提供对 OPCGroup 的自定义控件访问以注册项目/项目并删除它们
标签: c# .net properties custom-controls