Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

</html>

Теперь, пока библиотека

PCSCustomWebControls
сконфигурирована как приложение запуска, можно нажать кнопку Debug, чтобы увидеть результаты работы:

Добавим также ссылку на проект

PCSCustomWebControls
в раздел тестирования приложений:

Затем

добавим инструкцию
using
в пространство имен
PCSCustomWebControlsTestApp
в
WebForm1.aspx.cs
:

using PCSCustomWebControls;
 

Это позволит нам использовать наши специальные элементы управления из кода, скрытого за формой.

Базовые специальные элементы управления

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

<asp:Labels>
. Создаваемый в файле
.cs
код проекта,
WebCustomControl1.cs
, выглядит следующим образом:

namespace PCSCustomWebControls {

 using System;

 using System.Web.UI;

 using System.Web.UI.WebControls;

 using System.ComponentModel;

 /// <summary>

 /// Краткое описание WebCustomControl1

 /// </summary>

 [DefaultProperty("Text"),

 ToolboxData("<{0}WebCustomControl1 runat=server></{0}:WebCustomControl1>")]

 public class WebCustomControl1 : System.Web.UI.WebControls.WebControl {

private string text;

[Bindable(true), Category("Appearance"), DefaultValue(" ")]

public string Text {

get {

return text;

}

set {

text = value;

}

}

/// <summary>

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

/// </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
и введем в него следующий код:

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

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Маленькая хозяйка большого герцогства

Вера Виктория
2. Герцогиня
Любовные романы:
любовно-фантастические романы
7.80
рейтинг книги
Маленькая хозяйка большого герцогства

Законы Рода. Том 10

Flow Ascold
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10

Возмездие

Злобин Михаил
4. О чем молчат могилы
Фантастика:
фэнтези
7.47
рейтинг книги
Возмездие

Кровь эльфов

Сапковский Анджей
3. Ведьмак
Фантастика:
фэнтези
9.23
рейтинг книги
Кровь эльфов

Последний наследник

Тарс Элиан
11. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний наследник

Газлайтер. Том 4

Володин Григорий
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Бастард

Осадчук Алексей Витальевич
1. Последняя жизнь
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.86
рейтинг книги
Бастард

Князь

Шмаков Алексей Семенович
5. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
5.00
рейтинг книги
Князь

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Последняя Арена 11

Греков Сергей
11. Последняя Арена
Фантастика:
фэнтези
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 11

Болотник 3

Панченко Андрей Алексеевич
3. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 3

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10