在C#.NET中向Control添加属性

时间:2012-01-20 10:29:49

标签: c# .net visual-studio-2010

我想为.NET框架内的一些控件添加一些属性。 例如,我想添加一个相关控件列表 - 而不是已经存在的控件 - 来制作某种链接控件。

我所做的是创建一个小型界面装饰器,由一个从类Control扩展的具体装饰器实现。在这里,我将新属性和方法用于管理它们。

主要的问题是,当我创建一个装饰Control的实例时,我必须作为一个参数传递一个基本控件的实例 - 比方说,Combobox - ,并在装饰器内的一个新属性中引用它类。

当我尝试绘制该组件时,我无法做到。而且也不确定为什么。控件只是没有出现。

这是装饰器代码:

    public class ControlDecorator : Control, IDecorator
    {
    private List<Control> RelatedControls = new List<Control>();
    private Control Control;

    public ControlDecorator(Control c)
    {
        this.Control = c;
        this.Control.MouseClick += new MouseEventHandler(Control_MouseClick);
    }

以下是我创建控件的方法:

    Control lb = new Label();
    lb = new ControlDecorator(lb);
    editableArea.Controls.Add(lb);
    editableArea.Refresh();

3 个答案:

答案 0 :(得分:1)

你是否覆盖了OnPaint方法?因为你必须覆盖这个方法。您可以将字段名称更改为某个描述性名称,而不是使用Control Class进行模糊处理。 OnPaint

Control Class documentaiotn

Over riding on paint method

答案 1 :(得分:0)

您需要在ControlDecorator构造函数中调用InitializeComponent()方法。

public ControlDecorator(Control c)
{ 
  InitializeComponent();
  this.Control = c;
  this.Control.MouseClick += new MouseEventHandler(Control_MouseClick);
}

答案 2 :(得分:0)

public ControlDecorator(Control c)
{
    this.Control = c;
    this.Controls.Add(c);
    this.Control.MouseClick += new MouseEventHandler(Control_MouseClick);
}