Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual C++(.Net) / Visual C++(.Net).doc
Скачиваний:
167
Добавлен:
09.05.2015
Размер:
1.18 Mб
Скачать

Добавление новых форм к проекту

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

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

Для добавления к проекту новой формы надо открыть контекстное меню проекта SolutionExplorer, щелкнув по строкеHeaderFiles, и выбрать пунктAdd/NewItem(добавить новый элемент). То же самое можно сделать и ищ опцииProjectглавного меню.

В открывшемся диалоговом окне выбрать позицию WindowsForm(рис.), задать имя новой формы и нажать кнопкуAdd.

В результате будет выведена информация о добавлении новой формы в окне SolutionExplorer. Теперь надо выбрать, какую из форм назначить главной. По умолчанию таковой является первая созданная в проекте форма.

Отличия главной формы

1. Этой форме передается управление в начале выполнения приложения.

2. Закрытие пользователем главной формы означает завершение выполнения приложения.

3. Главная форма, как и любая другая, может быть спроектирована невидимой, но если все остальные формы закрыты, она в любом случае станет видимой (иначе пользователь не сможет работать с приложением).

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

Чтобы изменить порядок вывода форм, необходимо выполнить следующие действия.

1. Открыть контекстное меню проекта SolutionExplorerи выбрать опциюProperties. Откроется диалоговое окноProperty Pages.

2. В этом окне слева выбрать папку Generalи в окне справа из выпадающего менюStartupObjectвыбрать стартовую форму. Заметим, что дляVC++ExpressEditionэто сделать невозможно.

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

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

Форма вызывается на выполнение в двух режимах: модальном и обычном. Вызов на выполнение осуществляется двумя различными командами. В модальном режиме – методом формы ShowDialog(), в обычном – методом формыShow().

В момент создания формы возникает следующая последовательность событий.

1. Создание формы и всех управляемых ей компонентов с помощью конструктора.

2. После выполнения события Shownформа становится видимой.

3. Управление передается данной форме посредством события Activated.

4. При выполнении события Enterфокус передается первому компоненту в последовательности табуляции.

5. Переустанавливается размер формы (событие Resize).

6. Выполняется прорисовка изображения формы с помощью события Paint.

Все события (кроме срабатывания конструктора) могут повторяться неоднократно.

Например, для приложения «Блокнот» в модальном режиме откроем окно для отображения информации о программе. Введем эту информацию в комнонентLabel, добавим графику (если необходимо) и кнопку с подписью «Закрыть», по нажатии на которую окно с информацией будет становиться невидимым.

Теперь остается в обработчике события Clickдля пункта меню «О программе» написать две строки:

prog ^hlp=gcnew prog();

hlp->ShowDialog();

А в первой строке файла Form1.hуказать

#include “Form2.h”

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

В обработчике события Clickдля кнопки закрыть необходимо указать единственный методthis->Close().

При открытии формы в качестве модальной можно еще пользоваться следующей конструкцией.

System::Windows::Forms::DialogResult dr;

Form2 ^nDial=gcnew Form2();

dr=nDial->ShowDialog();

switch (dr){…}

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

this->DialogResult=System::Windows::Forms::DialogResult::OK;

Здесь вместо OKможно указать любую другую величину из имеющегося списка.

Закрыть форму можно методом Close(). При этом в закрывающейся форме возникает последовательность событий, которые можно обрабатывать. Из назначение – проверить возможность закрытия формы и указать, что именно подразумевается под закрытием формы.

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

При наступлении события FormCloseанализируется значениеFormClosedEventArgs.