Высокоуровневые методы информатики и программированияЛекция 20Пространство имен System.Windows.Forms

Содержание

Слайд 2

Технологии разработки GUI

Набор классов пространства System.Windows.Forms
Windows Presentation Foundation (WPF)

Технологии разработки GUI Набор классов пространства System.Windows.Forms Windows Presentation Foundation (WPF)

Слайд 3

Работа с окнами и сообщениями с использованием System.Windows.Forms

На платформе .Net для работы

Работа с окнами и сообщениями с использованием System.Windows.Forms На платформе .Net для
с этой библиотекой Win32 API программист должен использовать классы пространства имен System.Windows.Forms
Для рисования в окне используются классы пространства имен
System.Drawing

Слайд 4

Библиотека FCL (Framework Class Library)

System

System.Data

System.Xml

System.Web

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security

Design

ADO

SQLTypes

SQL

XPath

XSLT

Runtime

InteropServices

Remoting

Serialization

Serialization

Configuration

SessionState

Caching

Security

Services

Description

Discovery

Protocols

UI

HtmlControls

WebControls

System.Drawing

Imaging

Drawing2D

Text

Printing

System.Windows.Forms

Form

ComponentModel

Библиотека FCL (Framework Class Library) System System.Data System.Xml System.Web Globalization Diagnostics Configuration

Слайд 5

Основные классы пространства имен System.Windows.Forms

Основные классы пространства имен System.Windows.Forms

Слайд 6

Класс System.Windows.Forms.Application

Статический класс для управления всем приложением в целом
Запуск цикла обработки сообщений

Класс System.Windows.Forms.Application Статический класс для управления всем приложением в целом Запуск цикла
ОС
Завершение работы
Получение информации о приложении
События
о простое приложения
о завершении работы
Методы:
Application.Run(ссылка на форму)
Exit()
События:
ApplicationExit
Idle

Слайд 7

Элементы управления - Control

Специальный класс, включающий окно OC Windows в качестве поля.

Элементы управления - Control Специальный класс, включающий окно OC Windows в качестве

Элементы данного класса могут:
Показывать (рисовать) в заданном месте формы.
Обрабатывать сообщения ОС Windows переданные данному окну и формировать события класса о действиях пользователя
Работать в двух режимах
Design mode – в режиме визуального проектирования интерфейса пользователя
Рисовать себя на форме
Задавать значения свойств в системе программирования
Run-Time mode – при работе программы
Менять картинку в зависимости от действий пользователя

Слайд 8

Элемент управления

Класс, объекты которого имеют визуальное представление в виде окна ОС Windows
Класс

Элемент управления Класс, объекты которого имеют визуальное представление в виде окна ОС
Control реализует самую базовую функциональность, требуемую всем классам, которые показывают информацию пользователям. Он обрабатывает действия пользователя с клавиатурой и указывающими устройствами (pointing devices, мышь, джойстик, …)
Windows Forms controls
Использует окружающие свойства (ambient properties). Это такие свойства, которые если не установлены, то они запрашиваются у родительского элемента управления.

Слайд 9

void Show ()
{ ::Show (hwnd, SC_MIN)}

Базовый класс Control - элемент управления (окно)

включает в

void Show () { ::Show (hwnd, SC_MIN)} Базовый класс Control - элемент
качестве поля номер окна hwnd
используя hwnd и WinAPI может управлять своим окном
получает и обрабатывает события от ОС Windows
формирует новые события для классов пользователей – клиентов
поддерживает два режима работы:
Design mode
Run-time mode

Class A : Control

long hwnd = 1024;

// обработчики событий

hwnd = 1024;

Слайд 10

Основной класс операционной системы window

Создает и работает с окнами - ОС
Каждое

Основной класс операционной системы window Создает и работает с окнами - ОС
окно имеет номер – handle of window (hwnd)
с каждым окном связан обработчик событий – оконная процедура (wndProc)

Слайд 11

Некоторые базовые свойства класса System.Windows.Forms.Control

Handle – номер окна Windows
BackColor, ForeColor – фоновый

Некоторые базовые свойства класса System.Windows.Forms.Control Handle – номер окна Windows BackColor, ForeColor
цвет и цвет рисования
Left, Top, Right, Bottom – координаты точек диагонали
Height, Width – высота и ширина
Size – размер окна
ContextMenu – ссылка на контекстное меню
Cursor - ссылка на курсор
Name – имя элемента для работы системы разработки
Parent – ссылка на родительское окно
Text – заголовок
Font – используемый шрифт
Controls – список других элементов управления (если контейнер)
TabIndex – порядок перехода при нажатии клавиши Tab
Focused – имеет ли окно фокус ввода (get).
Anchor – связывание со сторонами родительской формы.
Dock – присоединение к сторонам родительской формы.

Слайд 12

Некоторые методы базового класса System.Windows.Forms.Control

Show() – показать окно на экране;
Hide() - спрятать

Некоторые методы базового класса System.Windows.Forms.Control Show() – показать окно на экране; Hide()
окно (убрать с экрана);
OnEvent() – обработать заданное событие;
CreateGrafics() – создать элемент класса Grafics для рисования в окне;
Update() – обновить содержание окна;
Invalidate() – объявить содержание окна неправильным, что заставляет ОС отправить событие WM_PAINT о необходимости перерисовки содержания окна.

Слайд 13

Основные события классов элементов

Общие события
Paint
GetFocuse
LostFocuse
Работа с мышкой
Click,
MouseDown, MouseEnter, MouseHover, MouseLeave, MouseMove

Основные события классов элементов Общие события Paint GetFocuse LostFocuse Работа с мышкой
MouseUp, MouseWheel
Работа с клавиатурой
KeyDown,
KeyUp,
KeyPress

Слайд 14

Обработка событий

Для обработки событий нужно иметь
Делегата, который описывает метод, обрабатывающий событие.
Класс,

Обработка событий Для обработки событий нужно иметь Делегата, который описывает метод, обрабатывающий
который содержит событие.

Слайд 15

Сигнатура обработчика событий

Все события классов FCL имею одинаковую сигнатуру (состав параметров)
Состав параметров
Ссылка

Сигнатура обработчика событий Все события классов FCL имею одинаковую сигнатуру (состав параметров)
на объект, сгенерировавший событие
Object
Объект содержащий параметры события
EventArgs (или производный от него)

public EventHandler (Object sender, System.EventArgs e)

Слайд 16

Делегат EventHandler

Описывает метод, который будет обрабатывать события, не имеющие специальных данных об

Делегат EventHandler Описывает метод, который будет обрабатывать события, не имеющие специальных данных
этом событии
public delegate void EventHandler ( Object sender, EventArgs e ) ;
EventArgs – базовый класс (пустой) для классов, которые содержат данные, описывающие произошедшее событие.
Для передачи данных, описывающих событие нужно создать производный класс от класса System.EventArgs.

Слайд 17

Класс основного окна программы
System.Windows.Forms.Form

Класс основного окна программы System.Windows.Forms.Form

Слайд 18

Класс System.Windows.Forms.Form

Форма (Form) это специальный класс, который позволяет пользователю создавать и показывать

Класс System.Windows.Forms.Form Форма (Form) это специальный класс, который позволяет пользователю создавать и
окно OC Windows.
Это окно может быть:
Основным окном программы;
Диалоговыми окнами программы.
Для работы с окнами необходимо создать и показать объект класса Form
Класс Form имеет множество свойств, методов, событий.

Слайд 19

Наследственность класса Form

Control

ScrollableControl

ContainerControl

Form

Object

. . .

Самый базовый класс

Базовый класс для элементов управления

Контейнер для

Наследственность класса Form Control ScrollableControl ContainerControl Form Object . . . Самый
других элементов управления

Слайд 20

Структура производной формы

Класс
Form

Text

Width

Height

Controls

Menu

Производный от формы класс

MyMenu

MyButton

MyTextBox

OnPaint

OnMouseDown

OnKeyDown

Новые методы и свойства

События подключаются:
event += new

Структура производной формы Класс Form Text Width Height Controls Menu Производный от
(delegate)
Используя перегружаемые функции базового класса

. . .

Слайд 21

Жизненный цикл объектов класса Form

Жизненный цикл элемента
Load
Activated
Deactivated
Close
Дополнительные события

Жизненный цикл объектов класса Form Жизненный цикл элемента Load Activated Deactivated Close Дополнительные события

Слайд 22

Класс System.Windows.Forms.Application

Статический класс для управления всем приложением в целом
Запуск цикла обработки сообщений

Класс System.Windows.Forms.Application Статический класс для управления всем приложением в целом Запуск цикла
ОС
Завершение работы
Получение информации о приложении
События
о простое приложения
о завершении работы
Метод передачи сообщений из очереди в объект класса Form
Application.Run (ссылка на форму);

Слайд 23

Структура программы с GUI интерфейсом

Class Application

Form frm;

Class XXX
{
static void Main ()

Структура программы с GUI интерфейсом Class Application Form frm; Class XXX {
{
Form frm = new Form();
Application.Run (frm);
}
}

Очередь сообщений

Class MyForm : Form

long hwnd = 2048;

// обработчики событий

void Run (f) { … }

Слайд 24

Последовательность создания программы с GUI

Создать класс производный от класса Form.
Задать в качестве

Последовательность создания программы с GUI Создать класс производный от класса Form. Задать
полей класса ссылки на элементы управления, которые будут показаны на форме.
В конструкторе класса, создать экземпляры элементов управления и установить их свойства.
Добавить элементы управления к коллекции Controls класса Form.
Добавить обработчики событий формы или элементов управления, на которые должна реагировать программа с сигнатурой .
void EventHandler (object o, EventArgs ea)
Связать обработчики с событиями элементов управления или формы.
Написать класс, который содержит статический метод Main:
static public void Main()
В этом методе создать экземпляр описанного производного от Form класса.
Запустить цикл обработки событий OC Windows (указать ссылку на объект производный от Form).

Слайд 25

Пример создания программы с GUI

class MyForm : Form
{
Button btn;
public

Пример создания программы с GUI class MyForm : Form { Button btn;
MyForm( )
{
this.Text = "Sample Windows Program";
this.Cursor = Cursors.Cross;
btn = new Button();
btn.Text = "Click me!";
btn.Top = 100; btn.Left = 100;
this.Paint += new EventHandler (OnPaint);
this.Controls.Add(btn);
}
protected override void Paint(PaintEventArgs pea)
{
Graphics grfx = pea.Graphics;
grfx.DrawString("Привет!", Font, Brushes.Black, 0, 0);
}
}

class Program
{
static void Main(string[] args)
{
MyForm frm = new MyForm();
Application.Run(frm);
}
}