Парадигмы - Лекция_1_мод4.ppt
- Количество слайдов: 30
Лекция 12 Windows Forms
Работа с формами • Большинство современных операционных систем используют событийно-управляемое программирование и формы для общения с пользователями. • Microsoft. NET Framework — это обширный набор классов, предоставляющий программистам многое из того, что необходимо для создания приложений для Интернета, Web и Windows. • Windows Forms используют для написания как традиционных автономных приложений для Windows (сейчас их иногда называют клиентскими), так и интерфейсной части распределенных приложений.
Base Class Libraries в. NET Framework поставляет большое количество классов для создания приложений, работающих в оконном режиме (forms-based windows applications). Библиотека Windows Forms предоставляет практически все, что нужно для создания полноценных приложений для Windows. Классы, определенные в. NET Framework, нейтральны по отношению к языку.
Создание окна (Forms) • Создавая Windows-приложение, необходимо создать класс – наследник класса Form. • Класс Form расположен внутри пространства имен System. Windows. Forms, поэтому необходимо использовать оператор • using System. Windows. Forms; • Следующий код иллюстрирует создание простейшей программы, создающей окно:
First. Frm. cs — простейшая оконная программа 1: // First. Frm. cs - A super simplistic windows form application 2: //------------------------------3: 4: using System. Windows. Forms; 5: 6: public class First. Frm : Form 7: { 8: public static void Main( string[] args ) 9: { 10: First. Frm frm. Hello = new First. Frm(); 11: Application. Run(frm. Hello); 12: } 13: }
Анализ первой Windows-программы В строке 4, указывается использование пространства имен System. Windows. Forms, позволяющее обращаться к классам Form и Application с помощью укороченных имен. В строке 6, описывается класс, с именем First. Frm. Создаваемый класс является наследником класса Form, который предоставляет все базовые возможности функционирования форм.
• Фактически одной строкой кода был создан класс представляющий windows-приложение. • В строке 10 создается экземпляр созданного класса. • В строке 11 вызывается метод Run класса Application. • В качестве параметра методу передается имя класса. Данный метод отображает форму и продолжает работу, пока программа не будет закрыта. • Существует возможность отображения формы с помощью метода Show класса Form : • frm. Hello. Show(); • Однако при этом возникает следующая ситуация: вызывается метод Show, отображается форма и затем программа переходит на следующую строку которая является последней в программе. Таким образом программа завершается. Скорее всего это не совсем то, что хотелось бы получить.
Метод Application. Run() • Программа написанная для работы под Windows является программой, управляемой событиями. После запуска метода Run() запускается цикл обработки сообщений, который продолжает работу до тех пор, пока программа не будет закрыта. • Когда происходит определенное событие (скажем, нажимается клавиша, перемещается мышь или выбирается пункт меню программы), то как бы из-за пределов программы вызывается соответствующий метод. • Если в программе присутствует соответствующий обработчик события, то он выполняется. Если обработчика нет, то цикл обработки сообщений продолжается.
Отображение формы Запуск цикла сообщений Обработчик есть? Обработка события
• Как видно из предыдущей схемы цикл обработки сообщений является бесконечным. Обычно цикл завершается с помощью специального события. • Базовая форма, которая наследуется от класса Form включает в себя кнопку закрытия и пункт меню Close в системном меню. Эти элементы управления генерируют событие которое закрывает форму и заканчивает цикл. • При нажатии кнопки Close на форме или выборе пункта меню Close генерируется событие завершения работы программы и помещается в конец очереди обработки событий.
• Метод Application. Run() также выполняет визуализацию формы. • При вызове этого метода и передачи ему в качестве параметра экземпляра объекта Form метод Application. Run() отображает форму и только после этого запускает цикл обработки сообщений. Для примера, когда нажимается кнопка мыши создается сразу несколько сообщений. Эти сообщения включают в себя событие «mouse down» , событие «mouse up» , и так далее.
Изменение параметров формы • Как и во многих других классах, в классе Form определяется ряд собственных свойств, и, кроме того, Form наследует свойства от своих предков, в частности, от Control.
Управление свойствами заголовка формы Заголовок формы содержит несколько управляющих элементов, позволяющих перемещать, минимизировать, максимизировать и восстанавливать размеры формы. Отображение этих управляющих элементов в заголовке производится с помощью соответствующих логических переменных.
Control. Box Определяет наличие системного меню. Help. Button Определяет наличие кнопки Help на заголовке формы. Maximize. Box Показывает, что присутствует кнопка максимизации формы. Minimize. Box Показывает, что присутствует кнопка минимизации формы. Text Содержит текст заголовка формы
Некоторые из этих свойств воздействуют на другие свойства. Например кнопка Help присутствует в заголовке формы только если свойства Maximize. Box и Minimize. Box одновременно установлены в false (выключены). На следующем слайде приведен код, присваивающий этим свойствам различные значения.
Form. App. cs—Свойства заголовка формы • • • 1: // Form. App. cs - Caption Bar properties 2: //--------------------------3: 4: using System. Windows. Forms; 5: 6: public class Form. App : Form 7: { 8: public static void Main( string[] args ) 9: {
• • • 10: Form. App frm. Hello = new Form. App(); 11: 12: // Caption bar properties 13: frm. Hello. Minimize. Box = true; 14: frm. Hello. Maximize. Box = false; 15: frm. Hello. Help. Button = true; 16: frm. Hello. Control. Box = true; 17: frm. Hello. Text = ”My Form’s Caption”; 18: 19: Application. Run(frm. Hello); 20: } 21: }
• Кроме того свойство отвечающее за кнопку Help установлено в true в строке 15. • Кнопка Help отображается только если оба свойства Minimize и Maximize установлены в false. Таким образом код в строке 15 просто игнорируется. • Если изменить фрагмент кода следующим образом: • • 13: frm. Hello. Minimize. Box = false; 14: frm. Hello. Maximize. Box = false; 15: frm. Hello. Help. Button = true; 16: frm. Hello. Control. Box = true; • Кнопка Help появится.
• Рассмотрим дополнительные возможности. Если установить свойство Control. Box в false, то исчезнет и кнопка Close и системное меню. Вдобавок, если установить Control. Box, Minimize. Box, и Maximize. Box в false и убрать текст заголовка окна, то заголовок вообще исчезнет. • Удалим строку 17 из кода и в строках 13– 16 присвоим свойствам значения false. Перезапустив программу. Получим форму начисто лишенную заголовка. Кстати поскольку на такой форме отсутствуют все органы управления, закрыть ее можно только с помощью комбинации клавиш Alt+F 4.
Auto. Scale Auto. Scroll Размеры формы устанавливаются автоматически в зависимости от размера используемых шрифтов и элементов управления. Добавляет форме возможность автоскроллинга. Auto. Scroll Margin Размер полей для автоскроллинга. Auto. Scroll Min. Size Auto. Scroll Position Client. Size Минимальный размер автоскроллинга Default. Size Свойство устанавливающее размер формы по умолчанию. Размещение позиции автоскроллинга. Размер клиентской области формы.
Desktop. Bounds Размер и размещение формы. Desktop. Location Размещение формы. Height Maximize. Size Высота формы Максимальный размер формы. Minimize. Size Минимальный размер формы. Size Размер формы. Используется объект Size включающий размеры по оси х и y. Ширина формы. Width
Start. Position Стартовая позиция формы. Принимает значение из перечисления Form. Start. Position имеет следующие значения: Center. Parent (Центрирование по родительской форме), Center. Screen (Центрирование по экрану), Manual (размещение и размеры определяются вручную, Windows. Default. Bounds (размещение по умолчанию), и Windows. Default. Location (размещение по умолчанию с дополнительно указанными размерами).
• • • 1: // Form. Size. cs - Form Size 2: //-----------------------------3: 4: using System. Windows. Forms; 5: using System. Drawing; 6: 7: public class Form. Size : Form 8: { 9: public static void Main( string[] args ) 10: { 11: Form. Size my. Form = new Form. Size(); 12: my. Form. Text = “Form Sizing”;
• • • 13: 14: my. Form. Width = 400; 15: my. Form. Height = 100; 16: 17: Point Form. Loc = new Point(200, 350); 18: my. Form. Start. Position = Form. Start. Position. Manual; 19: my. Form. Desktop. Location = Form. Loc; 20: 21: Application. Run(my. Form); 22: } 23: }
Установка размеров формы • В строках 14 -15 устанавливается размер формы с помощью свойств формы Width и Height. Оба этих свойства можно инициализировать одновременно используя объект Size. • Позиционирование формы не намного сложнее. В строке 17, создается объект класса Point включающий в себя координаты левого верхнего угла формы. Этот объект используется в строке Line 19, где присваивается свойству Desktop. Location. Использование короткого обращения к объекту Point возможно при указании пространства имен System. Drawing в строке 5.
• Строка 18, устанавливает значение свойства Start. Position. • Значения свойства Start. Position устанавливается из перечисления Form. Start. Position. • Если необходимо центрировать форму на экране необходимо заменить строки 17– 19 одной строкой: • my. Form. Start. Position = Form. Start. Position. Center. Screen; • Этой одной строкой форма располагается посередине экрана независимо от установленного разрешения экрана.
Изменение цвета фона формы • Работа с цветом фона формы требует присвоения свойству формы Back. Color значения соответствующего цвета. Значение цвета выбирается из структуры Color размещенной в библиотеке System. Drawing. • my. Form. Back. Color = Color. Hot. Pink; • Альтернативой установки цвета фона, является загрузка изображения и помещение его на форму. • Загруженное из файла изображение присваивается свойству формы Background. Image. В следующем примере имя файла изображения берется из командной строки.
• • • • 1: // Pic. Form. cs - Form Backgrounds 2: //--------------------------3: 4: using System. Windows. Forms; 5: using System. Drawing; 6: 7: public class Pic. Form : Form 8: { 9: public static void Main( string[] args ) 10: { 11: Pic. Form my. Form = new Pic. Form(); 12: my. Form. Back. Color = Color. Hot. Pink; 13: my. Form. Text = “Pic. Form - Backgrounds”; 14:
• 15: if (args. Length >= 1) • 16: { • 17: my. Form. Background. Image = Image. From. File(args[0]); • 18: Size tmp. Size = new Size(); • 19: tmp. Size. Width = my. Form. Background. Image. Width; • 20: tmp. Size. Height = my. Form. Background. Image. Height; • 21: my. Form. Client. Size = tmp. Size; • 22: my. Form. Text = “Pic. Form - “ + args[0]; • 23: } • 24: Application. Run(my. Form); • 25: } • 26: }
• Вышеприведенная программа помещает картинку в качестве фона. Имя файла получается из командной строки при запуске программы с помощью параметров функции Main. Если параметр будет отсутствовать, то цвет фона устанавливается константой Hot Pink. Пример запуска программы следующий: • Pic. Form pict 1. jpg • Файл pict 1. jpg должен размещаться в той же папке что и исполняемый файл Pic. Form. Если файл расположен в другой папке то необходимо указать полный путь к файлу. В случае если файл не будет найден сгенерируется исключение.
Парадигмы - Лекция_1_мод4.ppt