我正在构建一些使用OPC来控制某些工业自动化的应用程序。我决定创建一些自定义控件可能是一个好主意,这些控件适用于我将使用的标准功能,例如按钮和文本框。我的主要原因之一是,我觉得在一个理想的模式中,最终对象即按钮是持有关于它指向的OPC项目的信息的人,否则在典型的应用程序中,我的Form类受到我的变量的大量污染思维的范围更广泛,那么他们应该。然后我开始使用按钮的Tag属性,但是这需要一些开销代码,这对每个实例都是相同的。我觉得正确的做法是我想使用的子类控件,并提供属性来配置每个控件。C#自定义控件属性
考虑到这种情况,我真正的问题是这样的。为了使它尽可能便携,我决定应该有一个物业来定义OPC集团。我声明如下
public class OPCButton : Button
{
[Category("OPC")]
public OPCConnectedGroup
{
get { return _OPCGroup; }
set { _OPCGroup = value; }
}
}
属性这说明了INT财产清单时,我添加了控制,但我无法将这个属性绑定,即使我的Form1有
public OPCConnectedGroup Connection1 = new OPCConnectedGroup();
我已经解决了解决这个问题的方法是创建一个附加的控件,比如可以添加到Form中的OPCGrp,然后控件可以引用它。为了测试,我添加了Button类型的属性,当我添加它并浏览到属性时,它确实足够了,它为我提供了表单上所有按钮的选项。我没有这种方法的巨大问题,我只是想确保Im遵循原型模式,因为我将负责维护控制库,但并不总是执行,我试图把它放到1-2步的过程来实现一个控件。
感谢 马特
什么的'OPCConnectedGroup'是这个类由您所做的类型? –
正确。它实际上将是一个通用接口,如'IOPCConnectedGroup',并提供OPCGroup的自定义控件访问权限以注册项目/项目并将其删除 – MDK
您可能会觉得这篇文章有用:[如何创建可以订阅另一个文章的C#属性WinForm控件在设计时?](http:// stackoverflow。com/questions/34002533/how-do-you-create-a-c-sharp-property-that-can-subscribe-to-another-winform-contr) –