Но бывают ли такие ситуации, когда действительно требуется принудительно закрывать программу? Такая необходимость возникает при отладке и тестировании программы в эмуляторе. При стандартной модели поведения довольно утомительно каждый раз вручную останавливать программу, запущенную в эмуляторе. Конечно, можно временно присвоить свойству
MinimizeBox
при отладке значение
False
, что поможет избавиться от этой проблемы. Но перед окончательным релизом программы надо все же поставить значение
True
. Однако полагаться на свою память не стоит. Гораздо проще воспользоваться условной компиляцией.
При создании приложения надо использовать несколько строчек кода в конструкторе
формы сразу после вызова процедуры
InitializeComponent
, как показано в листинге 7.2.
Листинг 7.2
#if DEBUG
MinimizeBox = false;
#else
MinimizeBox = true;
#endif
Этот код стоит вынести на панель инструментов (рис. 7.1), что позволит быстро добавлять эту конструкцию в создаваемые приложения. Отныне все примеры в данной книге будут снабжаться этим кодом.
Рис. 7.1. Код условной компиляции на панели инструментов
Пиктограмма приложения
Любая серьезная программа должна иметь собственную пиктограмму. Чтобы указать используемую пиктограмму, надо при помощи команды меню
Project►Properties
открыть диалоговое окно
Property Pages
, выбрать раздел
Application
и указать путь к файлу с пиктограммой в свойстве
Icon
(рис. 7.2).
Рис. 7.2. Добавление пиктограммы для приложения
Создание собственных диалоговых окон
Сложные приложения часто используют несколько форм. Например, во многих программах имеется диалоговое окно
О программе
, в котором отображаются информация о программе, номер версии, сведения об авторе и логотип компании.
Для создания подобных форм хорошо подойдет собственное диалоговое окно. Чтобы отобразить такое окно, используется метод
ShowDialog
. Этот метод делает недоступным родительскую форму, пока диалоговое окно находится на экране. Диалоговое окно может возвращать результат вызова метода
ShowDialog
не только себе, но и родительскому окну.
Предположим, что нужно создать специальное окно авторизации пользователя для доступа к программе. В состав проекта нужно включить новую форму, которая будет реализована как диалоговое окно проверки имени пользователя
LogonForm
. Это будет маленькое окно без четко очерченной границы. В нем надо разместить текстовое поле и две кнопки. Затем надо задать значения свойств
FormBorderStyle
,
Size
и
Location
. При загрузке основной формы и обработке события
Load
создается новый экземпляр объекта
LogonForm
и вызывается как диалоговое окно. Данное окно может вернуть значения
DialogResult.OK
, если пользователь ввел имя, или
DialogResult.Cancel
, если он просто закрыл форму. Если было введено правильное имя, то главная форма продолжает свою работу. В противном случае приложение следует закрыть. Соответствующий код приведен в листинге 7.3.
ВНИМАНИЕ
Чтобы элементы управления диалогового окна были доступны вызывающей форме, их надо объявить с модификатором public. По умолчанию используется
После того как форма авторизации будет отображена на экране, нужно обработать события
Click
для нажатия кнопки проверки введенного имени пользователя или кнопки отмены. Первая кнопка проверяет правильность ввода имени. Если проверка завершилась успешно, то возвращается значение
DialogResult.OK
. Это иллюстрирует код, приведенный в листинге 7.4.
Многие программы имеют так называемые заставки (splash screen). При загрузке формы сначала отображается окно с логотипом компании, названием продукта и дополнительной информацией. Следует реализовать приложение с подобным экраном, чтобы научиться использовать эту технологию.
Прежде всего надо создать новый проект и добавить к уже имеющейся форме еще одну форму с именем
Splash
. При запуске приложения заставка появится во весь экран с заданным текстом в центре экрана. Эта форма будет отображаться в течение трех секунд, а затем она автоматически закроется и на экране останется основная форма.
Создание подобного окна практически не отличается от предыдущего примера. Но в этом примере надо использовать таймер, который будет отвечать за появление и закрытие начальной заставки. Эта же форма будет использоваться как диалоговое окно для стандартного пункта меню
О программе
.
Итак, надо создать дополнительную форму
AboutForm
и задать значения всех необходимых свойств окна. На форме надо расположить таймер, интервал срабатывания которого будет равен 3 с. Код, реализующий подобное поведение программы, приведен в листинге 7.6.