我想为.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();
答案 0 :(得分:1)
你是否覆盖了OnPaint方法?因为你必须覆盖这个方法。您可以将字段名称更改为某个描述性名称,而不是使用Control Class进行模糊处理。 OnPaint
答案 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);
}