Модификация приложения Windows Forms



 

Для начала изменим размер нашей единственной формы. Для этого можно потянуть за уголок в нужном направлении на странице визуального представления формы1. Но также размер можно менять на панели свойств этой формы. Для этого нужно поменять значение размера в пикселях (высоту и ширину) в поле Size.

 

ПРИМЕЧАНИЕ № 1: Для перехода на визуальное представление формы, необходимо двойным нажатием в обозревателе решений нажать на значок формы ( ) или выбрать вкладку на панели вкладок с именем <имя формы>. cs [Конструктор].

 

Задаём следующие параметры формы на панели Свойства:

 

( Name ) изменим с Form 1. cs 2 на LWP 04 Main

^ Поменяем внутреннее имя формы.

Text изменим с Form 1 на Windows Forms ( C #)

^ Поменяем заголовок формы (то что отображается в шапке приложения слева).

Icon изменим изображение (иконку) приложения

^ Необходим файл значка *. ico.

Size изменим со значений 300; 300 на 500; 350

^ Поменяем размер формы.

 

ПРИМЕЧАНИЕ № 2: Для того, чтобы поменять имя файла нашей формы, необходимо выполнить следующее: выделить в обозревателе решений значёк формы ( ) и нажать правую кнопку мыши, затем выбрать Переименовать. Ввести необходимое новое имя СОХРАНЯЯ расширение *. cs. После смены имени, автоматически поменяются имена проассоциированных непосредственно с формой файлов:

 

Получим нечто подобное:

 

Рис. 3. 1. Модифицированная форма приложения

 

Добавим на нашу форму ToolTip ( ). Этот элемент управления уже рассматривался в предыдущей лабораторной работе практикума.

 

Параметры добавленного элемента всплывающей подсказки таковы:

 

( Name ): Hint

 

Модификация приложения Windows Forms : добавление новой формы

 

Для добавления новой формы нам необходимо следующее: выделим правой кнопкой мыши название нашего проекта в обозревателе решений ( ), далее в выпадающем списке выполняем Добавить -> Создать элемент… (Ctrl+Shift+A). В окне добавления нового элемента ищем: Форма Windows Forms. Вводим и Имя: LWP04Children.cs. Теперь в обозревателе решений появилась новая форма:

 

Настроим её:

 

Text изменим с LWP 04 Children на Работа с окнами ( C #) :: Подчинённая форма

^ Поменяем заголовок формы (то что отображается в шапке приложения слева).

Icon  изменим изображение (иконку) формы
Size  изменим со значений 300; 300 на 500; 100

^ Поменяем размер формы.

FormBorderStyle  изменим с Sizable на FixedDialog

^ Сделаем окно «неизменяем» по размерам.

MaximizeBox изменим с True на False

^ Уберём кнопку Развернуть.

 

Новая форма будет выглядеть примерно так:

 

Рис. 4. 1. Новая добавленная форма приложения

 

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

 

Первое что необходимо сделать для вызова второй формы из первой это объявить конструктор класса новой формы:

 

В файле кода главной формы (изначально созданной средой разработки) ищем:

 

public partial class LWP04Main : Form

{

 

После добавляем:

 

   LWP04Children dlg = new LWP04Children();

 

Добавим вызывающую кнопку Button (показан конечный вариант кнопки):

 

Параметры добавленной кнопки таковы:

 

(Name): ButtonShowChildren
Text: Подчинённая форма
Size: 150; 23
ToolTip на Hint: Передача параметра через прямой доступ к элементам управления

 

Событие Click кнопки ButtonShowChildren:

 

   private void ButtonShowChildren_Click(object sender, EventArgs e)

   {

       if (!dlg.Visible)

           dlg.Show(this);

   }

 

Если откомпилировать приложение, нажать на кнопку тем самым вызван подчинённую форму, закрыть её и снова нажать на кнопку, то мы увидим следующую ошибку:

 

Рис. 4. 2. Ошибка вызванная нажатием кнопки вызова формы

 

После закрытия второй формы объект уничтожается. Для правильной обработки повторного вызова нужно добавить событие FromClosing для формы LWP 04 Childred:

 

   private void LWP04Children_FormClosing(object sender, FormClosingEventArgs e)

   {

       // Определяем кто закрывает приложение

       if (e.CloseReason == CloseReason.UserClosing)

       {

           Hide();

           e.Cancel = true;

       }

   }

 

Это правильный обработчик закрытия формы для нашего приложения. Однако, если в кнопке закрыть для дочерней формы применить код уничтожения объекта и высвобождения ресурсов, то кнопка Подчинённая форма вновь вызовет подобную ошибку. Высвобождает ресурс метод Dispose ().

 

Обработчик уничтожения формы по нажатию кнопки Закрыть может выглядеть так (не добавляем для нашего случая, иначе будет потеряна часть будущей функциональности именно для этой дочерней формы):

 

   private void ButtonClose_Click(object sender, EventArgs e)

   {

       Close(); // Кнопка Закрыть

       Dispose(); // Уничтожаем окно и все его параметры до следующего вызова конструктора формы

   }

 

Компилируем приложение, проверяем работу кнопки.

 


Дата добавления: 2019-09-13; просмотров: 205; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!