Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

/// Предоставить этот элемент управления указанному параметру вывода.

/// </summary>

/// <param name="output"> The HTML writer to write out to </param>

protected override void Render(HtmlTextWriter output) {

output.Write(Text);

}

 }

}

Начальные инструкции

using
для пространств имен вполне стандартны.

Здесь определен единственный класс

WebCustomControl1
(отметим, как имя класса отображается прямо в элемент ASP.NET в простом примере, только что увиденном), который является производным из класса
WebControl
, как обсуждалось ранее. Для этого класса предоставлены два атрибута:
DefaultProperty
и
ToolboxData
. Атрибут
DefaultProperty
определяет, какое свойство будет использоваться по умолчанию для элемента управления в языках, которые поддерживают эту функциональность. Атрибут
ToolboxData
точно определяет, какой код HTML будет добавлен к странице
.aspx
, если этот элемент управления добавляется с помощью инструментальной панели Visual Studio (когда проект откомпилирован, можно добавить элемент управления в панель инструментов, конфигурируя панель инструментов для использования созданной сборки).

Класс содержит одно свойство:

Text
. Это очень простое текстовое свойство, похожее на те, которые встречались раньше. Здесь необходимо отметить только три атрибута:

□

Bindable
— показывает, может ли свойство быть связано с данными.

□

Category
— задает, будет ли свойство выводиться на страницах свойств.

□

DefaultValue
— значение по умолчанию для свойства.

Представление свойств в таком виде работает точно таким же образом, как и для специальных элементов управления, и определенно предпочтительно по отношению к представлению открытых полей.

Остальная часть класса состоит из метода

Render
. Это единственный самый важный метод для реализации при создании специальных элементов управления, так как в нем мы получаем доступ к потоку вывода для изображения содержимого элемента управления. Существует только два случая, когда этот метод не нужно реализовывать:

□ Когда создается элемент управления, не имеющий визуального представления (обычно называемый компонентом).

□ Когда создается производный элемент из существующего элемента управления и не требуется изменять характеристики его изображения.

Специальные элементы управления могут также предоставлять специальные методы, инициировать специальные события, и отвечать производным элементам управления (если они существуют). Ниже мы рассмотрим:

□ Создание производных элементов управления

□ Создание композитных элементов управления

□ Создание более развитых элементов управления

Конечный пример будет элементом управления выбором, который разрешает пользователю голосовать за одну из нескольких возможностей, и выводить графически результаты голосования. Варианты выбора будут определяться с помощью вложенных элементов управления потомков способом, описанным ранее.

Создадим для начала простой производный элемент управления.

Производный элемент управления RainbowLabel

Для этого первого примера создадим производный элемент управления из элемента управления

Label
и переопределим его метод
Render
для вывода многоцветного текста. Чтобы держать элементы управления примера в этой главе отдельно, создадим новые файлы исходного кода, поэтому для этого элемента управления создадим новый файл
.cs
с именем
RainbowLabel.cs
и введем в него следующий код:

namespace PCSCustomWebControls {

 using System;

 using System.Web.UI;

 using System.Web.UI.WebControls;

 using System.ComponentModel;

 using System.Drawing;

 public class RainbowLabel : System.Web.UI.WebControls.Label {

private Color[] colors = new Color[] {

Color.Red, Color.Orange, Color.Yellow,

Color.GreenYellow, Color.Blue, Color.Indigo, Color.Violet

};

protected override void Render(HtmlTextWriter output) {

string text=Text;

for (int pos=0; pos < text.Length; pos++) {

int rgb = colors[pos % 7].ToArgb & 0xFFFFFF;

output.Write("<font color="#" + rgb.ToString("X6") + "'>" + text[pos] + "</font>");

}

}

 }

}

  • Читать дальше
  • 1
  • ...
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: