Вы находитесь на странице: 1из 21

Модуль 1.

Введение в Windows
Forms.
Что такое Windows Forms?

• Windows Forms — это набор классов иерархии BCL, отвечающих в платформе .Net
Framework за создание графического интерфейса пользователя (Graphical User
Interface). С помощью WinForms вы сможете создавать только клиентские
приложения, запускаемые на компьютере конечного пользователя. Это значит, что
для построения веб-приложений вам придется использовать другую часть .Net
Framework под названием WebForms.
• Для создания графических интерфейсов с помощью платформы .NET применяются
разные технологии - Window Forms, WPF, приложения для магазина Windows Store
(для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих
пор остается Window Forms или формы.
Что такое Windows Forms?

• Пространство имен System.Windows.Forms — одно из немногих, полагающихся на


функциональность операционной системы Windows. Класс Control — хороший тому
пример. Если выполнить дизассемблирование System.Windows.Forms.dll, то можно
увидеть список ссылок на класс UnsafeNativeMethods. Среда .NET Framework
использует этот класс как оболочку для всех стандартных вызовов Win32 API.
Благодаря возможности взаимодействия с Win32 API, внешний вид и поведение
стандартного приложения Windows можно обеспечить средствами пространства
имен System. Windows.Forms.
Отличие Windows Forms от других GUI библиотек.

Механизмы использования Windows Forms базируются на принципах ООП, в отличие


от WinAPI, что является немаловажным фактором. Это означает, что вы будете
использовать предопределенные классы для доступа к той или иной
функциональности библиотеки, что, безусловно, удобнее прямого общения с
функциями WinAPI. Субъективно можно отметить, что количество усилий
затрачиваемых на изучение и применение библиотеки Windows Forms в разы меньше
чем аналогичная деятельность для WinAPI.
Отличие Windows Forms от других GUI библиотек.

Подход к разработке прикладных программ на Windows Formsосновывается на


графическом интерфейсе GDI (Graphics Device Interface, Graphical Device Interface) - это
интерфейс Windows для представления графических объектов и передачи их на
устройства отображения, такие как мониторы и принтеры.
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку
палитры. Он не отвечает за отрисовку окон, меню и т.п., эта задача закреплена за
пользовательской подсистемой, располагающейся в user32.dll и основывающейся на
GDI.
Одно из преимуществ Windows Forms - в том, что на нем можно писать
коссплатформенные приложения. Простые проекты, написанные на Windows Forms,
можно довольно легко перенести на другую операционную систему, если на ней
установлен .NetFramework нужной модели, на котором написан Ваш проект. Выглядит
это действительно впечатляюще, но на практике очень часто проект не будет работать.
Отличие Windows Forms от других GUI библиотек.
На данный момент контролы для Windows Forms по количеству
превосходят WPF контролы в несколько раз. Это связано, в первую очередь, с тем,
что Windows Forms появился в .Net Framework 2.0 , аWPF - в .Net Framework 3.0.
Разрабатывать приложения на WindowsForms очень просто. Для визуального
интерфейса в основном большая часть логики связана с перетаскиванием нужных
контролов на форму.
Одним из самых важных различий между WinForms и WPF является тот факт, что в
WinForms интерфейс пользователя это всего лишь графический слой, использующий
стандартные элементы управления Windows (например TextBox), а WPF-интерфейс, в
свою очередь, построен "с чистого листа", не опираясь в большинстве случаев на
стандартные элементы. Это может показаться весьма тонкой гранью между
рассматриваемыми моделями, но в действительности это не так, и Вы обязательно
обратите на это внимание при работе с фреймворком, базирующимся на
Win32/WinAPI.
Отличие Windows Forms от других GUI библиотек.

Преимущества WinForms:
• Технология более старая и, соответственно, лучше испытанная и
протестированная.
• На данный момент существует огромное множество готовых элементов
управления, которые можно купить либо использовать бесплатно.
• С точки зрения написания, дизайнер Visual Studio лучше приспособлен к
WinForms, так как в WPF больше необходимо делать самому.
Анализ типичного Windows Forms приложения.

• Дизайнер — это утилита Visual Studio, которая автоматически генерирует код в то


время, когда вы настраиваете форму в редакторе. Программисту категорически не
рекомендуется писать свой код в данный метод, так как он пересоздаётся
дизайнером при изменении формы. Метод InitializeComponent вызывается
конструктором класса.
Окна сообщений.
Как правило, для вывода сообщений применяется элемент MessageBox. Однако кроме
сообственно вывода строки сообщения данный элемент может устанавливать ряд
настроек, которые определяют его поведение.Для вывода сообщения в классе
MessageBox предусмотрен метод Show, который имеет различные версии и может
принимать ряд параметров.
Применяются следующие параметры:
1. text: текст сообщения
2. caption: текст заголовка окна сообщения
3. buttons: кнопки, используемые в окне сообщения. Принимает одно из значений
перечисления MessageBoxButtons:
• AbortRetryIgnore: три кнопки Abort (Отмена), Retry (Повтор), Ignore (Пропустить)
• OK: одна кнопка OK
• OKCancel: две кнопки OK и Cancel (Отмена)
• RetryCancel: две кнопки Retry (Повтор) и Cancel (Отмена)
• YesNo: две кнопки Yes и No
• YesNoCancel: три кнопки Yes, No и Cancel (Отмена)
Окна сообщений.

icon: значок окна сообщения. Может принимать одно из следующих значений


перечисления MessageBoxIcon:
•Asterisk, Information: значок, состоящий из буквы i в нижнем регистре, помещенной в
кружок
•Error, Hand, Stop: значок, состоящий из белого знака "X" на круге красного цвета.
•Exclamation, Warning: значок, состоящий из восклицательного знака в желтом
треугольнике
•Question: значок, состоящий из вопросительного знака на периметре круга
•None: значок у сообщения отсутствует
defaultButton: кнопка, на которую по умолчанию устанавливается фокус. 
Окна сообщений.
MessageBoxDefaultButton:
• Button1: первая кнопка из тех, которые задаются перечислением
MessageBoxButtons
• Button2: вторая кнопка
• Button3: третья кнопка
options: параметры окна сообщения. Принимает одно из значений
перечисления MessageBoxOptions:
• DefaultDesktopOnly: окно сообщения отображается на активном рабочем столе.
• RightAlign: текст окна сообщения выравнивается по правому краю
• RtlReading: все элементы окна располагаются в обратном порядке справа налево
• ServiceNotification: окно сообщения отображается на активном рабочем столе, даже
если в системе не зарегистрирован ни один пользователь
Окна сообщений.

Однако нам не просто дается возможность установки кнопок в окне сообщения.


Метод MessageBox.Show возвращает объект  DialogResult , с помощью которого мы
можем узнать, какую кнопку в окне сообщения нажал пользователь. DialogResult
представляет перечисление, в котором определены следующие значения:
•Abort: нажата кнопка Abort
•Retry: нажата кнопка Retry
•Ignore: нажата кнопка Ignore
•OK: нажата кнопка OK
•Cancel: нажата кнопка Cancel
•None: отсутствие результата
•Yes: нажата кнопка Yes и No
•No: нажата кнопка No
Понятие события.
• Для взаимодействия с пользователем в Windows Forms
используется механизм событий. События в Windows
Forms представляют стандартные события на C#,
только применяемые к визуальным компонентам и
подчиняются тем же правилам, что события в C#. Но
создание обработчиков событий в Windows Forms все
же имеет некоторые особенности.
• Прежде всего в WinForms есть некоторый стандартный
набор событий, который по большей части имеется у
всех визуальных компонентов. Отдельные элементы
добавляют свои события, но принципы работы с ними
будут похожие. Чтобы посмотреть все события
элемента, нам надо выбрать этот элемент в поле
графического дизайнера и перейти к вкладке событий
на панели форм.
Понятие обработчика событий.

• Чтобы добавить обработчик, можно


просто два раза нажать по пустому полю
рядом с названием события, и после
этого Visual Studio автоматически
сгенерирует обработчик события.
• Как правило, большинство
обработчиков различных визуальных
компонентов имеют два
параметра: sender - объект,
инициировавший событие, и аргумент,
хранящий информацию о событии .
Форма.
• Форма — это аналог диалога, то есть фактически диалоговое окно, на котором вы
можете размещать элементы управления. С его помощью происходит
взаимодействие с пользователем. Класс form в .Net framework отвечает за операции
с формой. Класс form находится в пространстве system.Windows.Forms и наследуется
от большого количества классов.
Пробежимся по основным свойствам:
• Name: устанавливает имя формы - точнее имя класса, который наследуется от
класса Form
• BackColor: указывает на фоновый цвет формы. Щелкнув на это свойство, мы сможем
выбрать тот цвет, который нам подходит из списка предложенных цветов или
цветовой палитры
• BackgroundImage: указывает на фоновое изображение формы
• BackgroundImageLayout: определяет, как изображение, заданное в свойстве
BackgroundImage, будет располагаться на форме.
Форма.

• ControlBox: указывает, отображается ли меню формы. В данном случае под меню понимается меню
самого верхнего уровня, где находятся иконка приложения, заголовок формы, а также кнопки
минимизации формы и крестик. Если данное свойство имеет значение false, то мы не увидим ни
иконку, ни крестика, с помощью которого обычно закрывается форма
• Cursor: определяет тип курсора, который используется на форме
• Enabled: если данное свойство имеет значение false, то она не сможет получать ввод от
пользователя, то есть мы не сможем нажать на кнопки, ввести текст в текстовые поля и т.д.
• Font: задает шрифт для всей формы и всех помещенных на нее элементов управления. Однако, задав
у элементов формы свой шрифт, мы можем тем самым переопределить его
• ForeColor: цвет шрифта на форме
• FormBorderStyle: указывает, как будет отображаться граница формы и строка заголовка.
Устанавливая данное свойство в None можно создавать внешний вид приложения произвольной
формы
• HelpButton: указывает, отображается ли кнопка справки формы
Форма.
• Icon: задает иконку формы
• Location: определяет положение по отношению к верхнему левому углу экрана, если для
свойства StartPosition установлено значение Manual
• MaximizeBox: указывает, будет ли доступна кнопка максимизации окна в заголовке формы
• MinimizeBox: указывает, будет ли доступна кнопка минимизации окна
• MaximumSize: задает максимальный размер формы
• MinimumSize: задает минимальный размер формы
• Opacity: задает прозрачность формы
• Size: определяет начальный размер формы
• StartPosition: указывает на начальную позицию, с которой форма появляется на экране
• Text: определяет заголовок формы
• TopMost: если данное свойство имеет значение true, то форма всегда будет находиться поверх
других окон
• Visible: видима ли форма, если мы хотим скрыть форму от пользователя, то можем задать данному
свойству значение false
• WindowState: указывает, в каком состоянии форма будет находиться при запуске: в нормальном,
максимизированном или минимизированном
Принципы обработки сообщений мыши.
• Класс Control является базовым классом для элементов управления и для некоторых оконных классов.
Данный класс предназначен для аккумулирования общих механизмов для окон и элементов
управления. Рассмотрим в качестве примера мышиного события MouseMove.
• public event MouseEventHandler MouseMove
• MouseMove происходит при перемещении указателя мыши по элементу управления (окну). Тип
обработчика события определяется делегатом MouseEventHandler.
• public delegate void MouseEventHandler( Object sender, MouseEventArgs e)

• private void Form1_MouseMove(object sender, MouseEventArgs e)


• {
• MessageBox.Show("Координаты мыши: х=" + e.X.ToString() + "; y = " + e.Y.ToString());
• }
Использование таймера.
В .Net Framework существует несколько видов таймера. Сегодня мы разберем таймер,
находящийся в пространстве System.Windows.Forms, предназначенный для
использования в WinForms приложениях.
Для запуска таймера необходимо:
• 1. Создать объект класса Timer. Конструктор класса Timer не получает параметров.
• 2. Установить временной интервал для срабатывания таймера. Для этого
используется свойство Interval класса Timer. Значение интервала указывается в
миллисекундах.
• 3. Закрепить обработчик на событие Tick класса Timer.
• 4. Запустить таймер с помощью вызова метода Start класса Timer или свойства
Enabled того же класса
• 5. Для остановки таймера необходимо использовать метод Stop класса Timer.
Принципы работы со временем и датой.

• Для работы со временем и датой в .Net Framework используются структуры


DateTime и TimeSpan. DateTime используется для представления даты и времени, а
TimeSpan для представления временного промежутка.
• Рассмотрим некоторые поля и методы структуры DateTime. Конструктор класса
существует в большом количестве перегрузок. Проанализируем параметры: year —
год (от 1 до 9999), month — месяц (от 1 до 12), day — день (от 1 до количества дней в
month), hour — часы (от 0 до 23), minute — минуты (от 0 до 59), second — секунды (от 0
до 59), millisecond — миллисекунды (от 0 до 999).
Спасибо за внимание!
Вопросы.