C#自定义控件属性

MDK

我正在构建一些使用OPC来控制某些工业自动化的应用程序。我决定为我将使用的标准事物(例如按钮和文本框)创建一些自定义控件可能是一个好主意。我的主要原因之一是,我以一种理想的方式感觉到最终对象,即按钮是保存有关它所引用的OPC项的信息的对象,否则在典型的应用程序中,我的Form类会被大量的变量污染。他们的思维范围应该更全球化。然后,我开始使用按钮的Tag属性,但这需要一些开销代码,每个实例都相同。我觉得做对的事情是我想使用的子类控件,并提供属性来配置每个控件。

考虑到这种情况,我真正的问题是这个。为了使其尽可能地便携,我决定应该有一个属性来定义OPC组。我宣布了这样的财产

public class OPCButton : Button  
{  
    [Category("OPC")]
    public OPCConnectedGroup
    {
        get { return _OPCGroup; }
        set { _OPCGroup = value; }
    }
}

当我添加控件时,这会显示int属性列表,但是即使我的Form1包含了我也无法绑定此属性

public OPCConnectedGroup Connection1 = new OPCConnectedGroup();

我已经确定解决此问题的方法可能是创建一个附加控件,例如OPCGrp,可以将其添加到窗体中,然后控件可以引用此控件。为了进行测试,我添加了一个Button类型的属性,当我添加它并浏览到该属性时,可以肯定地为它提供了Form上所有按钮的选项。我对这种方法没有很大的疑问,我只想确保Im遵循原型模式,因为我将负责维护控件库,但并不总是执行,而Im试图将其简化为1-2步的过程来实施一个控件。

谢谢马特

雷扎·阿盖伊(Reza Aghaei)

定义OPCConnectedGroup时可以继承Component类。

这样,如果你有一个类型的属性OPCConnectedGroup在你的OPCButton,那么在设计时,你可以把实例OPCConnectedGroup的形式,然后如果你选择你OPCButton的设计师,类型的该属性OPCConnectedGroup会显示为一个下拉列表,你可以选择您在表单上放置的实例之一。

例:

如果我有这样MyButtonMyClass

public class MyButton : Button
{
    public MyClass MyClassInstance { get; set; } 
}

public class MyClass : Component
{
   public string SomeProperty {get;set;}
}

然后,您可以将一些(或一个)实例MyClass放在表单的组件托盘上:

在此处输入图片说明

然后,如果您MyButton在窗体上进行选择,则可以MyClass从属性网格中选择一个实例:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章