Лекция 7
4. Разработка интерфейса пользователя
4.1. Общие принципы
Интерфейс пользователя – это механизм, обеспечивающий взаимодействие пользователей с приложением. Рационально сконструированный интерфейс облегчает освоение и применение программы, а неудачный вызывает у клиентов ощущение бессилия и снижает эффективность их работы. Центральный элемент интерфейса приложения для Windows – форма. Для поддержки необходимой функциональности к приложению добавляют соответствующие элементы управления и меню.
Платформа .NET поддерживает в своей библиотеке богатый набор графических элементов, позволяющих сделать внешний вид приложения привлекательным, включая фигурные формы и элементы управления, прозрачные или полупрозрачные компоненты, а также эффекты затенения.
Форма – основной элемент пользовательского интерфейса, основа для построения приложения. Обычно формы отображают логически связанные данные и содержат инструментальные средства, позволяющие пользователю получать информацию, необходимую для продолжения работы. Любая форма в .NET является классом, поэтому можно создавать экземпляры форм и порождать одни формы от других.
При помощи элементов управления пользователь получает необходимую информацию и работает с программой. Одни элементы управления (надписи, изображения, …) только отображают информацию. Другие (поля, списки, …) кроме того способны к приему вводимых пользователем данных. Третьи (кнопки, переключатели, …) дают пользователю возможность управлять развитием событий. Меню и панели инструментов упорядочивают команды, доступные пользователю.
Дизайн пользовательского интерфейса во многом определяет впечатление от работы с приложением. От него зависит, примут ли пользователи приложение и быстро ли освоят его. Основные принципы дизайна таковы:
простота;
оптимальное размещение элементов управления;
логика и последовательность;
единый стиль;
эстетика внешнего вида.
Пользовательский интерфейс рекомендуется создавать на основе данных целевой аудитории.
4.2. Работа с формами
Теоретически возможно приложение без форм (например, сервисы Windows, консольные приложения). Однако большинству приложений, взаимодействующих с пользователем, необходима хотя бы одна форма. Для работы более сложных приложений обычно требуется много форм.
Базовым для всех форм является класс System.Windows.Forms.Form. При создании в Visual Studio .NET нового проекта типа Windows Forms к нему по умолчанию добавляется форма с именем Form1. Это не экземпляр формы, а класс, представляющий ее код. Форму можно редактировать средствами инструмента дизайнер (designer), добавлять к ней элементы управления, меню и прочие графические компоненты. При усложнении приложения наступает момент, когда требуются дополнительные классы форм.
При помощи механизма наследования (inheritance) можно создавать похожие формы на основе имеющихся. При этом новой форме передаются все члены, включая элементы управления, меню и код родительской формы. Инструмент Inheritance Picker предоставляет графический интерфейс для использования наследования. Этот способ часто применяют в качестве основы для разработки форм с дополнительной функциональностью. Кроме того, новые формы можно объявлять на основе имеющихся непосредственно в коде. Для применения наследования в проекте необходима ссылка на сборку, в которой располагается родительская форма, либо родительская форма должна быть членом текущего проекта.
Если приложение типа Windows Forms содержит несколько форм, то одну из них следует назначить стартовой. С этой целью в классе формы нужно объявить статический метод Main, служащий точкой входа в приложение. Если в проекте несколько форм с методом Main, стартовой можно сделать любую из них. Для этого можно использовать окно свойств проекта.
4.2.1. Некоторые свойства форм
Укажем ряд полезных свойств, содержащихся (или унаследованных) в классе форм. Как уже говорилось, для использования свойств принят тот же синтаксис, что и для других членов класса. Значения свойств можно задавать оператором присваивания и получать их, обращаясь к свойствам по имени.
public System.Windows.Forms.FormStartPosition StartPosition;
Позволяет определить место, в котором форма появится на экране впервые. Может принимать значение из перечисления FormStartPosition:
Manual – место отображения определяется свойством формы Location;
CenterScreen – в центре экрана;
WindowsDefaultLocation – место задается по умолчанию в Windows;
WindowsDefaultBounds – место и размеры задаются по умолчанию в Windows;
CenterParent – в центре родительской формы.
public System.Windows.Forms.FormBorderStyle FormBorderStyle;
Определяет стиль границы (рамки) окна. Принимает значения из перечисления FormBorderStyle:
None – рамка отсутствует, включая заголовок окна;
FixedSingle – рамка фиксированная плоская, заголовок есть;
Fixed3D – фиксированная объемная;
FixedDialog – фиксированная в стиле окна диалога (отсутствует пиктограмма в заголовке);
Sizable – аналогично FixedSingle, но позволяет менять размеры окна мышью;
FixedToolWindow – фиксированная в стиле панели инструментов (узкий заголовок, нет пиктограммы, системных кнопок, кроме кнопки закрытия);
SizableToolWindow – аналогично предыдущему, но можно менять размеры.
public bool HelpButton, MaximizeBox, MinimizeBox;
Задают наличие/отсутствие системных управляющих мини-кнопок в правой части заголовка формы.
public string Text;
Задает текстовый заголовок формы.
public System.Drawing.Color ForeColor, BackColor;
Определяют для формы цвета переднего плана и фона. Свойство ForeColor, в частности, задает цвет шрифта. При размещении на форме большинство элементов управления автоматически устанавливают свои свойства ForeColor и BackColor согласно значениям этих свойств формы.
public System.Drawing.Image BackGroundImage;
Позволяет вместо однотонного фона определять изображение. Если оно задано, то изменение свойства BackColor формы сказывается на значении этого свойства ее элементов управления, но не влияет на саму форму.
public System.Drawing.Font Font;
Указывает шрифт для элементов управления формы.
public System.Windows.Forms.Cursor Cursor;
Задает вид указателя мыши, который он принимает, находясь над формой.
public bool Visible;
Установка этого свойства показывает экземпляр формы на экране с передачей ему фокуса ввода (true) или скрывает его (false). Указанный экземпляр формы предварительно должен быть создан в памяти.
public double Opacity;
Задает степень прозрачности формы. Принимает значения от 0.0 (невидимая) до 1.0 (непрозрачная). По умолчанию равно 1.