У Windows є 2 типи форм: модальні (Modal) і не модальні. Модальність визначає поведінку фокусу вводу форми і тип інтерфейсу: однодокументний (SDI) чи багатодокументний (MDI).
Модальна форма не дозволяє переключати фокус вводу на іншу форму без свого закриття. Вона є реалізацією SDI. Прикладами модальних форм є всі стандартні блоки діалогу Windows (у тому числі повідомлення про помилки). Модальні форми мають фіксований розмір і містять обмежений склад команд системного меню.
Не модальна форма дозволяє переключатися на іншу форму. Вона реалізує MDI (multiple document interface). Ці форми можуть містити інші форми, які в цьому випадку називаються MDI child forms. MDI форма створюється після встановлення в true властивості IsMdiContainer.
Прикладом є вікно Word або Excel. Як правило, головна форма в застосунку є не модальною. Не модальні форми мають системне меню і кнопки згортки-відновлення. Вони можуть змінювати свій розмір.
Кожна форма як екземпляр класу System.Windows.Forms має властивості, методи та події.
Властивості форми
Властивості визначають розмір і поведенку форми, фон, заголовок форми, особливості керування формою.
Статичні властивості можна встановити двома способами:
1) написати відповідні конструктори з ініціалізацією в файлі Form1.designer.cs;
2) встановити значення властивостей у вікні властивостей (Properties) в середовищі Visual Studio.
Динамічні властивості можна задавати під час виконання як реакцію на події.
Основні властивості форми (класу Form) перелічені в табл. 3.5.
Таблиця 3.5. Основні властивості форми (класу Form)
Властивість
Призначення
Значення за замовчуванням
Name
Назва форми в проекті.
Form1, Form2..
AcceptButton
Встановлюється значення кнопки, яка буде спрацьовувати при натисненні клавіші Enter. Для того щоб ця властивість була активною, необхідна наявність принаймні однієї кнопки, розташованої на формі
None
BackColor
Колір форми
Control
BackgroundImage
Фоновий рисунок
None
CancelButton
Встановлюється значення кнопки, яка буде спрацьовувати при натисненні клавіші Esc.
None
ControlBox
Встановлюється наявність або відсутність трьох стандартних кнопок у верхньому правому кутку форми: "Згорнути", "Розгорнути" і "Закрити"
Cursor
Визначається вид курсора при його положенні на формі
Default
DrawGrid
Встановлюється наявність або відсутність сітки з точок, яка допомагає форматувати елементи форми.
True
Font
Формат шрифта
Microsoft Sans Serif; 8,25pt
FormBorderStyle
Визначення виду границь форми.
Sizable
Icon
Зображення іконки, що розташовується в заголовку форми. Підтримуються формати .ico.
MaximizeBox
Визначається активність стандартної кнопки "Розгорнути" у верхньому правому кутку форми.
True
MaximumSize
Максимальний розмір ширини і висоти форми, що задається в пікселях. Форма буде приймати вказаний розмір при натисненні на стандартну кнопку "Розгорнути"
0;0 (У весь екран)
MinimizeBox
Визначається активність стандартної кнопки "Згорнути" у верхньому правому кутку форми
True
MinimumSize
Мінімальний розмір ширини і висоти форми, що задається в пікселях. Форма буде приймати вказаний розмір при зміні її границь користувачем (якщо властивість FormBorderStyle має значення за умовчанням Sizable)
0;0
Size
Ширина и висота форми
300; 300
StartPosition
Визначення розташування форми при запуску застосування.
WindowsDefaultLocation
Text
Заголовок форми.
Form1, Form 2
WindowState
Визначення положення форми при запуску. Можливі значення:
· Normal — форма запускається з розмірами, вказаними у властивості Size;
· Minimized — форма запускається з мінімальними розмірами, вказаними у властивості MinimumSize;
Maximized — форма розгортається на весь екран
Normal
Методи форми
Методи забезпечують керування формою.
Таблиця 3.6. Основні методи класу Form
Ім’я методу
Призначення
Form.ShowDialog()
Забезпечує представлення форми як модального dialog box.
Form.Show()
Показує форму як немодальний dialog box
Form.SetDesktopLocation()
Використовується для позиціонування форми на поверхні desktop
Form.Activate()
Активізує приховану форму
Form.Hide()
Приховує форму
Form.Close().
Закриває форму
Події форми
Події форми пов’язані із створенням, знищенням, режимами роботи форми.
Таблиця 3.7. Основні події класу Form
Подія
Призначення
Load
Генерується один раз, безпосередньо після першого виклику методу Form.Show() або Form.ShowDialog(). Ця подія може використовуватися для первинної ініціалізації змінних і для підготовки форми до роботи (для кожної форми).
OnLoad
Призначення максимальних і мінімальних розмірів форми
Activated
Подія генерується при активізації форми. В обробнику події вставляють методи Form.Show(), Form.ShowDialog(), Form.Activate()
VisibleChanged
Генерується при зміні властивості Visible форми коли вона стає видимою або невидимою. Події сприяють методи Form.Show(), Form.ShowDialog(), Form.Hide(), Form.Close().
Deactivated
Виникає при втраті фокусу формою в результаті взаємодії з інтерфейсом користувача або в результаті виклику методів Form.Hide() або Form.Cloze() – але тільки для активної форми. Якщо закривати неактивну форму, подія не відбудеться.
Closing
Виникає безпосередньо перед закриттям форми. У цей момент процес закриття форми може бути припинений і взагалі відмінений, чому сприяє розміщуваний в тілі обробника події наступний програмний код: e.Cancel = true; де e - подія типу CancelEventArgs.
Closed
Вже після закриття форми. В обробнику цієї події розміщується будь-який код для “очищення” після закриття форми.