Главная » C#, Компоненты » Класс Component

0

Что же такое компонент? С точки зрения кода, компонент— это класс, реализующий интерфейс System. ComponentModel. IComponent. "Минимальный" базовый класс, реализующий этот интерфейс, — это System.Component- Model. Component, т.е. он является базовым классом для всех компонентов, поддерживающих режим разработки. Этот класс реализует три интерфейса:

?     MarshalByRefObject — реализует поддержку .NET Remoting;

?        icomponent— реализует функциональность, требуемую режимом разработки;

?        iDisposabie— реализует возможность управления занятыми ресурсами при уничтожении объекта.

Конечно, можно реализовывать интерфейс icomponent и без использования класса component, но это может оказаться достаточно затруднительно.

Перечислю основные свойства класса component, которые могут нам понадобиться в дальнейшей работе.

?        СВОЙСТВО protected virtual bool CanRaiseEvents возвращает true, если компонент будет вызывать обработчики событий. По умолчанию это свойство всегда возвращает true. Если компонент не будет вызывать обработчики событий, то свойство Events возвращает null.

?        Свойство protected bool DesignMode { get; } — СМ. следующий раздел. Это очень важное свойство, и мы будем обсуждать его отдельно.

?        Свойство protected EventHandlerList Events { get; } возвращает СПИСОК делегатов, присоединенных к компоненту. Если CanRaiseEvents вернет false, то это свойство вернет null.

В режиме разработки у компонента появляются еще три свойства (рис. 4.2)1:

?        свойство GenerateMember отвечает за создание переменной, соответствующей компоненту;

?        свойство Locked управляет возможностью перемещать компонент на форме и изменять его размеры;

?        свойство Modifiers задает модификатор переменной, которая будет создана, если свойство GenerateMember имеет значение true.

Если свойство GenerateMember равно true, дизайнер формы создает переменную, соответствующую компоненту с модификатором, заданным свойством

Modifiers:

partial class Forml {

private System.Windows.Forms.Button buttonl;

private void InitializeComponent() {

this.buttonl = new System.Windows.Forms.Button(); this.SuspendLayout() ;

this.buttonl.Location = new System.Drawing.Point(89, 36); this.buttonl.Name = "buttonl";

this.buttonl.Size = new System.Drawing.Size(75, 23);

this.buttonl.Tablndex = 0;

this.buttonl.Text = "buttonl";

this.buttonl.UseVisualStyleBackColor = true;

this.buttonl.Click += new System.EventHandler(this.buttonl__Click);

}

}

Если же свойство GenerateMember имеет значение false, то инициализация компонента производится с помощью локальной переменной:

partial class Forml (

private void InitializeComponent() (

System.Windows.Forms.Button buttonl;

buttonl = new System.Windows.Forms.Button(); this.SuspendLayout() ;

buttonl.Location = new System.Drawing.Point(89, 36); buttonl.Name = "buttonl";

buttonl.Size = new System.Drawing.Size(75, 23);

buttonl.Tablndex = 0;

buttonl.Text = "buttonl";

buttonl.UseVisualStyleBackColor = true;

buttonl.Click += new System.EventHandler(this.buttonl_Click);

}

}

Рис. 4.2. Свойства времени разработки (группа Design)

На рис. 4.3 показана возможность управления редактированием с помощью свойства Locked. Верхняя форма соответствует режиму "разрешено" (свойство Locked равно false), нижняя форма — режиму "запрещено" (свойство Locked равно true). В первом случае компонент имеет маркеры управления размером и положением компонента, а во втором — нет1.

С остальными свойствами класса Component мы будем разбираться по мере необходимости.

Рис. 4.3. Управление возможностью редактирования с помощью свойства Locked

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии