繁体   English   中英

C#自定义控件属性

[英]C# Custom Control Properties

我正在构建一些使用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,可以添加到Form中,然后控件可以引用它。 为了测试我添加了一个Button类型的属性,当我添加它并浏览到属性时它确实给了我表单上所有按钮的选项。 我对这种方法没有太大的问题我只是想确保我遵循原型模式,因为我将负责维护控制库但不总是实现并且我试图将其简化为1-2步骤来实现一个控件。

谢谢马特

定义OPCConnectedGroup您可以继承Component类。

这样,如果你有一个类型的属性OPCConnectedGroupOPCButton ,那么在设计时,你可以把实例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实例:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM