Программирование >>  Программирование с использованием ajax 

1 ... 163 164 165 [ 166 ] 167 168 169 ... 396


Описание полученных результатов

Наиболее интересная часть этого примера связана с меню Window. Чтобы меню отображало список всех диалоговых окон, открытых в MDI-приложении, нужно всего лишь создать меню верхнего уровня и установить свойство MdiWindowListltem, чтобы оно указывало на этом меню.

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

Остальные два элемента меню - Tile (Мозаика) and Cascade (Каскад) - демонстрируют метод, используемый формой: MdiLayout. Этот метод позволяет упорядочивать диалоговые окна стандартным образом.

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

1 L4it*t I


- - и

Puc. 16.14. Раскрытое меню Window

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

Иногда элементы управления, поставляемые с Visual Studio, просто не в состоянии удовлетворить все потребности. Причины этого могут быть самые различные - элементы прорисовываются не так, как желательно, ограничены в том или ином отношении, или же нужный элемент управления просто не существует. Осознавая это, Microsoft предоставляет средства для создания нужных элементов управления. Visual Studio предоставляет проект Windows Control Library (Библиотека элементов управления Windows), который можно использовать для самостоятельного создания элемента управления.

private void ToolStripMenuItemNew Click(object sender, EventArgs e) {

f rmEditor newForm = new f rmEditor (this, ++mCounter) ;

newForm.Show() ;



Obiect

Visual Studio позволяет разрабатывать два различных вида самодельных элементов управления.

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

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

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

Элементы управления ActiveX, использовавшиеся в среде Visual Studio 6, существовали в специальном файле с расширением . осх. По сути, эти файлы представляли собой СОМ-библиотеки DLL. В среде .NET элемент управления существует совершенно в том же виде, что и любая другая сборка, поэтому расширение .осх исчезло, а элементы управления существуют в виде библиотек DLL.

Пользовательские элементы управления являются производными от класса System.Windows . Forms .UserControl. Этот базовый класс снабжает создаваемый элемент управления всеми основными функциональными возможностями, присущими элементу управления в среде .NET, оставляя программисту только задачу создания элемента управления. В качестве элемента управления могут выступать буквально любые компоненты - от надписей причудливой формы до полнофункциональных таблиц. На рис. 16.15 новый элемент управления представлен нижним прямоугольником, UserControll.

MarshalByRefOb...

Control

ScrolableControl

ContainerControl

UserControl

CUjx

UMrControll

Puc. 16.15. Иерархия наследования нового элемента управления

Пользовательские элементы управления являются производными от класса System.Windows.Forms,UserControl, a нестандартные элементы управления - от класса System. Windows. Forms. Control.

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



□ Поведение элемента управления во время проектирования должно быть во много аналогично его поведению во время выполнения. Это означает, что если элемент управления состоит из элементов управления Label и TextBox, объединяемых для создания элемента управления LabelTextbox, и Label, и TextBox должны отображаться во время проектирования, и текст, введенный в элементе Label, должен также отображаться во время проектирования. Хотя в данном примере достаточно просто добиться выполнения этого условия, в более сложных случаях это может быть сопряжено с проблемами, когда придется искать подходящий компромисс.

□ Доступ к свойствам элемента управления из конструктора Forms Designer должен осуществляться логичным образом. Показательным в этом отношении примером может служить элемент управления ImageList, представляющий диалоговое окно, из которого пользователи могут выполнять обзор для выбора нужных изображений; как только изображения импортированы, они отображаются в диалоговом окне в списке.

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

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

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

□ Пользователь должен иметь доступ к обычным свойствам и событиям текстового поля и надписи.

Элемент управления LabelTextbox

Теперь, когда стоящие задачи ясны, запустите Visual Studio и создайте новый проект.

1. Создайте новый проект Windows Forms Control Library I usercontroii.c [D > .gn] (Библиотека элементов управления Windows Forms) no имени LabelTextbox и сохраните его в каталоге

C:\BegVCSharp\Chapterl6.

При использовании версии Visual Studio Express данная опция может быть недоступной. В этом случае создайте новый проект Class Library (Библиотека классов) и добавьте пользовательский элемент управления в проект вручную через меню Project (Проект).

Как видно на рис. 16.16, конструктор Forms Designer пре- Рис. 16.16. Поверх-

доставляет поверхность проектирования, несколько отли- ность проектирова

чающуюся от использованной ранее. Во-первых, она значи- ния конструктора

тельно меньше. Во-вторых, она вообще не выглядит диало- Forms Designer



1 ... 163 164 165 [ 166 ] 167 168 169 ... 396

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