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

1 ... 9 10 11 [ 12 ] 13 14 15 16


Внешний вид

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

Иногда не нужно, чтобы пользователь имел доступ к системному меню. Имеется в виду меню, которое появляется по щелчку на пиктограмме, расположенной в верхнем левом углу окна. Обычно оно содержит такие элемент:, как Restore, Minimize, Maximize и Close. Свойство ControlBox позволяет установить видимость системного меню. Видимость кнопок Minimize и Maximize можно задать свойствами MaximizeBox и MinimizeBox. Если удалить все кнопки и затем присвоить свойству Text пустую строку ( ), то полоса заголовка исчезнет полностью.

Если установить свойство Icon формы и не установить ControlBox в false, то в левом верхнем углу появится пиктограмма. Обычно ее устанавливают в app.ico. Это присваивает каждой форме пиктограмму, совпадающую с пиктограммой приложения.

Свойство FormBorderStyle устанавливает тип рамки, окружающей форму через значения из перечисления FormBorderStyle:

□ Fixed3D

□ FixedDialog

□ FixedSingle

□ FixedToolWindow

□ None

□ Sizable

□ SizableToolWindow

Большая часть приведенных выше значений не требует пояснений, за исключением двух рамок инструментальных (Tool) окон. Окна Tool не появляются в панели задач, независимо от установки ShowInTaskBar. Кроме того, такие окна не отображаются в списке окон, когда нажимается комбинация <Alt+Tab>. По умолчанию установлен тип рамки Sizeable.

Если только не предъявлены специальные требования, цвета большинства элементов графического интерфейса пользователя должны быть установлены системными, а не какими-то конкретными. При этом если какой-нибудь пользователь предпочитает иметь зеленые кнопки с красным текстом, он может это настроить для всей системы и приложение примет такие настройки. Чтобы установить для элемента управления некоторый системный цвет, нужно вызвать метод FromKnownColor класса System. Drawing.Color. Этот метод принимает значение из перечисления KnownColor. Многие цвета определены в этом перечислении как цвета различных элементов графического интерфейса пользователя - например, Control, ActiveBorder и Desktop. Поэтому если, например, цвет фона формы должен всегда соответствовать цвету Desktop, нужно применить следующий код:

myForm.BackColor = Color.FromKnownColor(KnownColor.Desktop);

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



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

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

[STAThread]

static void Main()

Application.EnableVisualStyles(); Application.Run(new Form1());

Этот код позволяет многим элементам управления, поддерживающим визуальные стили, воспользоваться их преимуществами. Из-за последствий применения метода EnableVisualStyles() сразу после его вызова может понадобиться вызвать метод Application.DoEvents(). Это решит проблему исчезновения пиктограмм и панелей инструментов во время выполнения. К тому же метод EnableVisualStyles доступен только в .NET Framework 1.1.

Вам доведется решать еще одну задачу, имеющую отношение к элементам управления. Большая часть элементов управления имеет свойство FlatStyle, принимающее значения из перечисления FlatStyle:

□ Flat - аналогично flat, за исключением того, что когда указатель мыши находится на элементе управления, он принимает трехмерную форму;

□ Standard - элемент управления имеет трехмерную форму;

□ System - внешний вид элемента управления управляется системой.

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

Многодокументный интерфейс (MDI)

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

Проект, содержащий примеры для этой главы, сам является примером MDI-при-ложения. Форма mdiParent в этом проекте представляет собой родительскую форму MDI. Установка свойству IsMdiContainer значения true делает любую форму родительской формой MDI. Если форма находится в дизайнере, это можно сразу увидеть, поскольку ее цвет изменяется на темно-серый. Это говорит о том, что данная форма стала родительской формой MDI. В нее по-прежнему можно добавлять элементы управления, но обычно это не рекомендуется.

Для того чтобы форма вела себя как дочерняя форма MDI, она должна знать, какая форма является для нее родительской. Это делается присвоением свойству MdiParent ссылки на родительскую форму. В примере все дочерние формы создаются методом ShowMdiChild, принимающим ссылку на дочернюю форму, которая должна быть пока-



зана. После установки свойства MdiParent на this, т.е. ссылку на форму mdiParent, дочерняя форма отображается. Код метода ShowMdiChild выглядит следующим образом:

private void ShowMdiChild(Form childForm)

childForm.MdiParent = this; childForm.Show();

Одна из особенностей MDI-приложений состоит в том, что в любой момент времени может быть открыто несколько дочерних форм. Ссылка на текущую активную дочернюю форму может быть получена из свойства ActiveMdiChild родительской формы. Это демонстрирует пункт Windows-меню Current Active. Выбор его отобразит окно сообщения с именем формы и текстовым значением.

Дочерние формы могут быть размещены вызовом метода LayoutMdi. Он принимает параметр типа перечисления MdiLayout, возможные значения которого включают Cascade, TileHorizontal и TileVertical.

Заказные элементы управления

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

Элементы управления создаются различными способами. Можно начать с нуля, унаследовав новый класс от Control, ScrollableControl или ContainerControl. При этом нужно будет переопределить событие Paint, чтобы полностью выполнять все рисование, не говоря уже о добавлении функциональности, которую ваш элемент управления должен обеспечивать. Если элемент управления задуман как расширенная версия некоторого существующего, то потребуется объявить его наследником класса расширяемого элемента управления. Например, если необходим элемент управления TextBox, который будет менять цвет фона при установке свойства ReadOnly, то полное создание совершенно нового TextBox будет напрасной тратой времени. В этом случае просто унаследуйте новый класс от TextBox и переопределите свойство ReadOnly. Поскольку свойство ReadOnly класса TextBox не помечено словом override, в объявлении нужно использовать конструкцию new. В следующем коде показан пример такого переопределения свойства ReadOnly.

public new bool ReadOnly

get { return base.ReadOnly;}

set {

if(value)

this.BackgroundColor = Color.Red;

else

this.BackgroundColor = Color.FromKnowColor(KnownColor.Window); base.ReadOnly = value;

Здесь видим, что get возвращает то, что и базовый объект. Опрос свойства никак не связан с нашей задачей изменения цвета фона при установке ReadOnly, поэтому мы просто передаем функциональность базовому объекту. При установке же свойства следует проверить переданное новое значение - false или true. Если оно равно true, то изменяем цвет (в данном случае на красный), а если false - устанавливаем



1 ... 9 10 11 [ 12 ] 13 14 15 16

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