* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Создание составных элементов управления
8 февраля 2009
Пользовательские, или составные, элементы управления объединяют нестандарт- ные возможности с функциональностью стандартных элементов управления Windows Forms, позволяя быстро создавать новые элементов управления. Пользователь- ский элемент управления состоит из одного или нескольких стандартных элемен- тов управления, объединенных в группу. Дизайнер UserControl предназначен для добавления к составным элементам управления дочерних элементов управления, также называемых вложенными. На рис. 7-1 показан дизайнер UserControl, в кото- ром открыт составной элемент управления с парой вложенных кнопок и текстовым полем.
Разработчик может написать собственный код для обработки событий, генери- руемых вложенными элементами управления. Предположим, что вам требуется со- здать пользовательский элемент управления, который состоит из двух текстовых полей и надписи. При изменении значений любого из текстовых полей этот эле- мент управления должен автоматически складывать их и отображать сумму в над- писи. Подобную функциональность удается реализовать, переопределив методы Ол- KeyPress вложенных текстовых полей следующим образом: Visual Basic .NET Для события KeyPress элемента управления TextBoxS нужно создать аналогичный обработчик, Private Sib TextBox1_KeyPress(ByVal Sender As Object, ByVal e As KeyPressEventArgs) Handles TextBoxl.KeyPress 1 Проверить, является ли нажатая клавиша цифровой, If Char.IsNumber(e.KeyChar) = False Then e.Handled - True End If LabeU.Text = (Integer. Parse(TextBox1 .Text) + Integer.Parse(TextBox2.TexT)).ToString() End Sub Visual C# // Для события KeyPress элемента управления TextBox2 // нужно создать аналогичный обработчик. protected override void OnKeyPress(object sender, KeyPressEventArgs e) { // Проверить, является ли нажатая клавиша цифровой. if (char.lsNumber(e.KeyChar) == false) e.Handled - true; LabeU.Text = (int.Parse(TextBox1.Text) + int.Parse(Tex:Box2.Text)).ToString(); } Вложенные компоненты составных элементов управления считаются закрыты- ми. Поэтому ни один разработчик, которому случится работать с вашим элементом управления, не сможет изменить такие свойства его вложенных элементов управле- ния, как цвет, форма и размер. Чтобы разрешить другим разработчикам изменять свойства вложенных элементов управления, сделайте их доступными через свой- ства объекта составного элемента управления. Рассмотрим составной элемент уп- равления с вложенной кнопкой (Button 1). Чтобы предоставить доступ к свойству BackColor объекта Button], создайте, например, для него свойство-оболочку у объек- та элемента управления, как показано ниже: Visual Basic .NET Это свойство, объявленное в классе составного элемента управления. Public Property ButtonColor() As Color Get Return Button"!. BackColor End Get Set(ByVal Value As Color) Buttonl. BackColor = Value End Set End Property Visual C# public color ButtonColor { get { return Buttonl. BackColor: } set { Buttonl. BackColor = value; Чтобы предоставить доступ к вложенному элементу управления, измените его свойство Modifiers. Это возможно только через окно Properties в период разработки, поскольку в период выполнения оно не существует, Свойство Modifiers позволяет задать любой уровень доступа, который применяется к соответствующему вложен- ному элементу управления. ^ Как создать составной элемент управления 1. Объявите класс, производный от UserControl. 2. Вызовите дизайнер UserControl и добавьте с его помощью вложенные элементы управления Windows Forms, после чего соответствующим образом настройте их. 3. При необходимости сделайте доступными свойства вложенных элементов упра- вления. 4. Реализуйте нестандартные возможности, необходимые составному элементу управления.