Программирование >>  Web ориентированные приложения 

1 ... 12 13 14 [ 15 ] 16


пиктограммы. Щелкнем на пиктограмме и перетащим ее на форму TestHarness. Установим RootFolder на одну из доступных папок и запустим решение.

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

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

□ Фоновую загрузку - загрузка большого дерева папок может потребовать значительного времени. Усовершенствовав процесс инициализации так, чтобы воспользоваться преимуществами многопоточности для фоновой загрузки может быть хорошей идеей.

□ Кодирование с помощью цвета - можно выводить имена файлов определенных типов в разных цветах.

□ Пиктограммы - можно добавить элемент управления ImageList, в который поместить пиктограммы каждого загруженного файла или папки.

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

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

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

Чтобы создать пользовательский элемент управления в текущем проекте, щелкните правой кнопкой мыши в Solution Explorer и выберите в контекстном меню пункт AddAdd New User Control (Добавить Добавить новый пользовательский элемент управления). Можно также создать новый проект Control Library (Библиотека элемента управления) и добавить в него этот пользовательский элемент управления. После того, как новый пользовательский элемент управления будет запущен, мы увидим в дизайнере форму без рамок. Сюда мы поместим элементы управления, из которых будет состоять наш пользовательский элемент. Напомним, что пользовательский элемент управления состоит из одного или более элементов управления, добавленных в контейнер, поэтому все это напоминает создание формы. Для ввода адреса нам понадобится пять текстовых полей (TextBox) и три метки (Label). Расположить их можно любым подходящим образом (рис. 31.4).




Рис. 31.4. Пример компоновки пользовательского элемента управления

Имена текстовых полей в нашем примере будут такими:

□ txtAddress1

□ txtAddress2

□ txtCity

□ txtState

□ txtZip

После того, как текстовые поля будут размещены и получат корректные имена, добавим общедоступные свойства. У вас может возникнуть соблазн сделать составляющие текстовые поля общедоступными (public), а не приватными (private). Однако это плохая идея, поскольку нарушает принцип инкапсуляции функциональности, которую вы можете пожелать добавить к свойствам.

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

public string AddressLine1 {

get{return txtAddress1.Text;}

set{

if(txtAddress1.Text != value)

txtAddress1.Text = value; if(AddressLine1Changed != null)

AddressLine1Changed(this, EventArgs.Empty);

public string AddressLine2

get{return txtAddress2.Text;}

set{

if(txtAddress2.Text != value)



txtAddress2.Text = value; if(AddressLine2Changed != null)

AddressLine2Changed(this, EventArgs.Empty);

public string City

get{return txtCity.Text;} set{

if(txtCity.Text != value)

txtCity.Text = value; if(CityChanged != null)

CityChanged(this, EventArgs.Empty);

public string State

get{return txtState.Text;} set{

if(txtState.Text != value)

txtState.Text = value; if(StateChanged != null)

StateChanged(this, EventArgs.Empty);

public string Zip

get{return txtZip.Text;} set{

if(txtZip.Text != value)

txtZip.Text = value; if(ZipChanged != null)

ZipChanged(this, EventArgs.Empty);

Экземпляры свойства get достаточно прямолинейны. Они возвращают значения соответствующих текстовых свойств элемента управления TextBox. Напротив, экземпляры свойства set выполняют немного больше работы. Все они функционируют единообразно. Сначала выполняется проверка того, изменяется ли значение свойства. Если новое значение совпадает со старым, то ничего не происходит. Если же новое значение отличается, то оно присваивается текстовому свойству элемента TextBox, после этого проверяется, существует ли экземпляр события. Речь идет о событиях изменения свойств, которые имеют специальный формат имени - propertynameChanged, где propertyname - имя свойства. В случае свойства AddressLine1 событие называется AddressLine1Changed. События объявляются так, как показано ниже:

public event EventHandler AddressLine1Changed; public event EventHandler AddressLine2Changed; public event EventHandler CityChanged; public event EventHandler StateChanged; public event EventHandler ZipChanged;



1 ... 12 13 14 [ 15 ] 16

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика