Добавление свойств в элемент управления в C # .NET - PullRequest
1 голос
/ 20 января 2012

Я хочу добавить некоторые свойства к некоторым элементам управления в .NET Framework.Например, я хочу добавить список связанных элементов управления, а не содержащиеся элементы управления, которые уже существуют, чтобы создать какие-то элементы управления ссылками.

Я создал небольшой интерфейсный декоратор, реализованный конкретным декораторомчто выходит из класса 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 ]

1 голос
/ 20 января 2012

вы переопределили метод OnPaint ??как вы должны переиграть метод.вы можете изменить имя поля на какое-нибудь описательное имя, вместо того, чтобы делать двусмысленным с Control Class. OnPaint

Управляющий класс documentmentaiotn

Перекос по методу краски

0 голосов
/ 20 марта 2013
public ControlDecorator(Control c)
{
    this.Control = c;
    this.Controls.Add(c);
    this.Control.MouseClick += new MouseEventHandler(Control_MouseClick);
}
0 голосов
/ 20 января 2012

Вам необходимо вызвать метод InitializeComponent () в конструкторе ControlDecorator.

public ControlDecorator(Control c)
{ 
  InitializeComponent();
  this.Control = c;
  this.Control.MouseClick += new MouseEventHandler(Control_MouseClick);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...