- •Основы создания оконных приложений Особенности поведения оконных приложений.
- •Первое оконное приложение
- •Элементы управления
- •Событийно-управляемая модель выполнения оконного приложения
- •Принцип распределения ответственности
- •Элемент управления Timer
- •Динамическое управление обработчиками
- •Вопрос 1: Перед тем как оператор
- •Вопрос 2: Можно ли связать с событием несколько обработчиков и что при этом происходит?
- •Вопрос 3: Можно ли выполнить обратную операцию – исключить обработчик из списка?
- •Элемент управления ListBox
- •Параметры событий. Каскад событий
- •Использование визуального дизайнера
- •Редактирование свойств элементов управления
- •Анализ сгенерированного исходного кода
- •Сохранение результатов
- •Управление объектами файловой системы
- •Информация о логических дисках (класс DriveInfo)
- •Работа с каталогами (папками)
- •Работа с файлами
- •Стандартные диалоговые окна
- •Сериализация
- •Объектные графы
- •Формат сериализации
- •Реконструкция объектов
- •Использование SoapFormatter и XmlSerializer
- •Сохранение коллекций объектов
- •Архитектура программных систем
- •Собственные производные классы элементов управления
- •Другие элементы управления
- •Класс Control
- •Использование возможностей класса Control
- •Ответ на события MouseMove
- •Регистрация щелчков кнопок мыши
- •Ответ на события клавиатуры
- •Функциональные возможности класса Form
- •Цикл существования типа Form
- •Form (Форма)
Элементы управления
Как мы уже говорили, внешний вид (официально – визуальный интерфейс) оконного приложения основан на стандартном наборе элементов, которые можно размещать в окне (на форме) приложения. Существует несколько десятков видов таких элементов (их еще называют элементами управления, а по-английски – control). Каждый вид элементов управления реализован с помощью некоторого класса. Все классы элементов управления являются производными от класса Control. Класс Control и все классы элементов управления находятся в пространстве имен System.Windows.Forms. Наиболее популярными являются командные кнопки (класс Button), надписи или метки (класс Label) и поля ввода (класс TextBox). Программно управлять внешним видом элементов управления можно через соответствующие открытые свойства классов. Например, размер элемента управления можно узнать или изменить с помощью свойств Height (высота) и Width(ширина). Одной из важных составляющих Вашего умения создавать оконные приложения является знание этих многочисленных свойств.
Усовершенствуем нашу программу. После запуска в окне программы должны размещаться две кнопки. Размеры и расположение элементов на форме показаны на следующем рисунке:
Для реализации такого поведения текст программы следует изменить следующим образом:
using System;
using System.Windows.Forms;
using System.Drawing;
static class Program
{
static void Main()
{
int FormHeight=300;
int FormWidth=500;
Form f;
Button b1;
Button b2;
//создание и настройка формы
f = new Form();
f.ClientSize = new Size(FormWidth, FormHeight);
//создание и настройка первой кнопки
b1 = new Button();
b1.Left = FormWidth / 5; //расстояние левой грани кнопки от левой грани клиентской области формы
b1.Top = FormHeight / 3; //расстояние верхней грани кнопки от верхней грани клиентской области формы
b1.Width = FormWidth / 5; //ширина кнопки
b1.Height = FormHeight / 3; //высота кнопки
//создание и настройка второй кнопки
b2 = new Button();
b2.Bounds = new Rectangle(3*FormWidth / 5, FormHeight / 3, FormWidth / 5, FormHeight / 3);
//добавление кнопок на форму
f.Controls.Add(b1);
f.Controls.Add(b2);
//запуск цикла обработки событий
Application.Run(f);
}
}
Текст программы существенно вырос. Объясним все подробнее.
В программе используются классы из пространства имен System.Drawing. Поэтому не забудьте доавить в проект ссылку (reference) на это пространство имен и соответствующую директиву using в текст программы (стр.03).
Для удобства управления размерами в стр. 08 и 09 вводятся вспомогательные переменные FormHeight (высота формы) и FormWidth(ширина формы). Они определяют размер внутренней области окна (клиентской области), не включающей заголовок и рамку вокруг окна.
Программа должна обращаться к свойчтвам формы и кнопок. Поэтому для ссылки на эти объекты в стр. 10-12 описываются соответствующие переменные.
После создания объекта-формы в стр.14 ее клиентский размер задается с помощью свойства ClientSize. Значением этого свойства является ссылка на объект класса Size из пространства имен System.Drawing (стр.15).
Первая кнопка создается в стр.17. Ее положение и размер задаются свойствами Left, Top, Width и Heigh (стр.18-21).
Вторая кнопка создается в стр.23. Ее положение и размер задаются другим способом – с помощью свойства Bounds (границы), значением которого является объект Rectangle (прямоугольник) (стр.24). В дальнейшем выбирайте тот способ управления, который Вам больше подходит.
Следующий момент очень важен и часто вызывает на практике ошибки. Объекты кнопки пока никак не связаны с объектом-формой. Поэтому программа хотя и создает все объекты, но не показывает кнопки внутри формы. Для показа кнопок на форме их необходимо добавить в специальный контейнер формы, который доступен через свойство Controls. Это делается методом Add в стр. 26 и 27.
Наконец в стр. 29 форма показывается на экране и начинает взаимодействовать с пользователем.
