Книга: Программирование КПК и смартфонов на .NET Compact Framework
Переключение между формами
Разделы на этой странице:
Переключение между формами
Программа должна выводить форму с результатами поверх основной формы игры, чтобы позволить игроку ввести имя, а затем вернуться к игре. Когда форма с лучшими результатами появляется на экране, основная форма должна быть скрыта. И наоборот, при закрытии окна с результатами основная форма восстанавливается.
При загрузке формы генерируется событие Load
. При закрытии формы генерируется событие Closing
. Программа должна контролировать эти события для реализации поставленной задачи.
При старте программы создается экземпляр формы HighScore
. Данный экземпляр имеет ссылку на родительскую форму. При достижении высокого результата форма HighScore
выводится на экран. При этом выполняется метод HighScore_Load
, который скрывает родительскую форму. На экране появляется форма, отображающая лучшие результаты, игрок вводит свое имя и выполняет команду меню OK
. При этом срабатывает обработчик события для меню OK
, которое закрывает форму HighScore
. При закрытии формы выполняется метод HighScore_Closing
. Основное окно формы снова появляется на экране. Код главной формы извлекает имя игрока из формы HighScore
.
Итак, метод HighScore_Load
должен скрыть родительскую форму. Для этого метод должен использовать ссылку на главное окно. Ссылка на родительское окно передается в форму HighScore
при ее создании, как показано в листинге 11.54.
Листинг 11.54
/// <summary>
/// Родительское окно, из которого вызывается данное окно.
/// Используется при закрытии данного окна.
/// </summary>
private Form parentForm;
public HighScore(Form inParentForm) {
// Сохраняем родительское окно при закрытии окна лучших
// результатов.
parentForm = inParentForm;
InitializeComponent();
}
Этот код является конструктором формы HighScore
. Когда идет создание формы, то передается ссылка на родительскую форму.
Код метода HighScore_Load
приведен в листинге 11.55.
Листинг 11.55
private void HighScore_Load(object sender, System.EventArgs e) {
parentForm.Hide();
}
При загрузке формы родительское окно автоматически прячется. При закрытии формы надо вернуть родительскую форму на экран. Для этого применяется код, приведенный в листинге 11.56.
Листинг 11.56
private void HighScore_Closing(object sender,
System.ComponentModel.CancelEventArgs e) {
parentForm.Show();
}
После ввода имени игрок выполняет команду меню OK
для закрытия формы. Обработчик этого события приведен в листинге 11.57.
Листинг 11.57
private void doneMenuItem_Click(object sender, System.EventArgs e) {
Close();
}
После закрытия окна вызывается обработчик события, который выводит главное окно на экран.
- Начало работы
- Добавление изображения в программу
- Использование встроенных ресурсов
- Вывод картинки на экран
- Создание анимации
- Отражения
- Управление скоростью движения объекта
- Добавляем новый объект
- Устранение мерцания
- Хлеб — всему голова
- Обнаружение столкновений
- Столкновения батона и мяча
- Новые объекты
- Размещение помидоров
- Уничтожение томатов
- Счет игры
- Ведение счета
- Звуковые эффекты
- Дальнейшие улучшения
- И опять добавляем новые объекты
- Управление таблицей результатов
- Переключение между формами
- Отображение дочернего окна
- Получение имени игрока
- Хранение лучших результатов
- Улучшение графики
- Спрайты
- Миграция между различными версиями InterBase
- 3.4. Отношения между классами
- Мост между физической и логической структурой базы данных
- Распределение функциональных обязанностей между должностями
- Правило 16. Группируйте связанные между собой элементы
- 6.4.2. Передача номенклатурных позиций между ячейками склада
- Как быстро переключаться между двумя пользователями, не закрывая их программ?
- Как узнать скорость соединения между компьютерами?
- Обмен данными между гостевой и хостовой ОС
- Проблема с переключением языков. Значок есть, но не работает. Если через Панель управления удалить все языки и тут же сн...
- Как в документе Microsoft Word изменить расстояние между двумя словами?
- Международное соперничество