1. Темы лекции: Windows Forms.
Практическое задание: Приложение Windows Forms.
Тренер: Игорь Шкулипа, к.т.н.
Платформа .Net и язык программирования C#.
Занятие 8
2. http://www.slideshare.net/IgorShkulipa 2
MVC
Шаблон проектирования
MVC разделяет работу
веб-приложения на три
отдельные
функциональные роли:
• модель данных
(model)
• пользовательский
интерфейс (view)
• управляющую
логику (controller)
Таким образом, изменения,
вносимые в один из
компонентов, оказывают
минимально возможное
воздействие на другие
компоненты.
3. http://www.slideshare.net/IgorShkulipa 3
MVP
• Модель (model) представляет
собой интерфейс, определяющий
данные для отображения или
участвующие в пользовательском
интерфейсе иным образом
• Вид (view) - это интерфейс,
который отображает данные
(модель) и маршрутизирует
пользовательские команды (или
события) Presenter-у, чтобы тот
действовал над этими данными.
• Presenter действует над
моделью и видом. Он извлекает
данные из хранилища (модели), и
форматирует их для отображения
в Виде (view). Так же реализует
обработку событий вида.
5. http://www.slideshare.net/IgorShkulipa 5
Windows Forms
Windows Forms является технологией интеллектуальных клиентов для
.NET Framework; это набор управляемых библиотек, обеспечивающих
распространенные задачи приложений, например чтение и запись в
файловую систему. С помощью среды разработки типа Visual Studio
можно создавать приложения Windows Forms, которые отображают
информацию, запрашивают ввод от пользователей и обмениваются
данными с удаленными компьютерами по сети.
Интеллектуальный клиент — это приложение с богатым графическим
интерфейсом, простое в развертывании и обновлении, способное
работать при наличии или отсутствии подключения к Интернету и
использующее более безопасный доступ к ресурсам на локальном
компьютере по сравнению с традиционными приложениями Windows.
В Windows Forms форма является видимой поверхностью, на которой
отображается информация для пользователя. Обычно приложение
Windows Forms строится путем помещения элементов управления на
форму и написанием кода для реагирования на действия
пользователя, такие как щелчки мыши или нажатия клавиш.
Элемент управления — это отдельный элемент пользовательского
интерфейса, предназначенный для отображения или ввода данных.
6. http://www.slideshare.net/IgorShkulipa 6
Упрощенная иерархия классов
Среди классов Windows Forms есть
обширный набор классов для
создания сложных графических
пользовательских интерфейсов. Эти
классы можно использовать в
приложениях, написанных на
любом языке .NET
Как правило, приложение Windows
Forms будет содержит главное
окно, которое реализовано с
помощью некоторого класса
MyForm, производного от класса
Form (Форма).
На рисунке изображена иерархия
классов Windows Forms
7. http://www.slideshare.net/IgorShkulipa 7
Класс Control
Класс Control определяет базовый класс для элементов управления,
являющихся компонентами с визуальным представлением.
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
public class Control : Component,
IDropTarget, ISynchronizeInvoke, IWin32Window,
IBindableComponent, IComponent, Idisposable
Чтобы создать собственный класс элементов управления, осуществите
наследование из классов UserControl, Control или из других элементов
управления, предоставляемых в Windows Forms. Дополнительные сведения
о самостоятельно разработанных пользовательских элементах управления
см. в разделе Разработка пользовательских элементов управления Windows
Forms в .NET Framework.
Класс Control реализует основные функциональные возможности, необходимые
для классов, отображающих сведения для пользователя. Он обрабатывает
входные данные, полученные с клавиатуры и указывающих устройств. Он
также обрабатывает операции, связанные с маршрутизацией сообщений и
безопасностью. Он определяет границы элемента управления (позицию и
размер), хотя и не реализует рисование.
8. http://www.slideshare.net/IgorShkulipa 8
Класс Application
Предоставляет статичные методы и свойства для управления приложением,
например методы для запуска и остановки приложения, для обработки
сообщений Windows и свойства для получения сведений о приложении.
Этот класс не наследуется.
public sealed class Application
Класс Application содержит методы для запуска и остановки приложений и
потоков, а также для обработки сообщений Windows:
• Run запускает цикл обработки сообщений приложения в текущем
потоке и при необходимости делает форму видимой.
• Exit или ExitThread останавливает цикл обработки сообщений.
• DoEvents обрабатывает сообщения пока программа в цикле.
• AddMessageFilter добавляет фильтр обработки сообщений.
• IMessageFilter позволяет предотвратить инициацию события и
выполнять особые операции до вызова обработчика событий.
• Этот класс содержит CurrentCulture и CurrentInputLanguage -
свойства для получения или задания данных о языке и региональных
параметрах для текущего потока.
9. http://www.slideshare.net/IgorShkulipa 9
Свойства класса Application
AllowQuit
Возвращает значение, указывающее, может ли вызывающий выйти из этого
приложения.
CommonAppDataPath Получает путь для данных приложения, являющихся общими для всех пользователей.
CommonAppDataRegistry
Получает раздел реестра для данных приложения, являющихся общими для всех
пользователей.
CompanyName Возвращает название компании, связанное с приложением.
CurrentCulture
Возвращает или задает сведения о языке и региональных параметрах для текущего
потока.
CurrentInputLanguage Получает или задает текущий язык ввода для текущего потока.
ExecutablePath
Возвращает путь исполняемого файла, запустившего приложение, включая имя
исполняемого файла.
LocalUserAppDataPath Получает путь для данных приложения локального неперемещающегося пользователя.
MessageLoop
Возвращает значение, указывающее, существует ли цикл обработки сообщений в этом
потоке.
OpenForms Возвращает коллекцию открытых форм, принадлежащих приложению.
ProductName Получает название продукта, связанное с этим приложением.
ProductVersion Возвращает версию продукта, связанное с этим приложением.
RenderWithVisualStyles
Возвращает значение, указывающее, допускает ли текущее приложение элементы
управления с помощью визуальных стилей.
SafeTopLevelCaptionFormat
Возвращает или задает строку форматирования для применения к заголовкам окна
верхнего уровня, когда они отображаются с баннером предупреждения.
StartupPath
Получает путь для исполняемого файла, запустившего приложение, не включая
исполняемое имя.
UserAppDataPath Получает путь для данных приложения пользователя.
UserAppDataRegistry Получает раздел реестра для данных приложения пользователя.
UseWaitCursor
Возвращает или задает, используется ли курсор ожидания для всех открытых форм
приложения.
VisualStyleState Возвращает значение, указывающее, как они применяются к окнам приложения.
10. http://www.slideshare.net/IgorShkulipa 10
Пространство имен System.Windows.Forms
Пространство имен System.Windows.Forms предоставляет следующие типы классов:
• Элементы управления, пользовательские элементы управления и формы.
Большинство классов в пространстве имен System.Windows.Forms являются
производными от класса Control. Класс Control предоставляет основные
функциональные возможности для всех элементов управления, отображаемых на
форме.
• Меню и панели инструментов. Набор классов, которые позволяют создавать
пользовательские панели инструментов и меню, отличающиеся современным
обликом и поведением.
• Элементы управления. Большое количество классов элементов управления, которые
позволяют создавать пользовательские интерфейсы с расширенными возможностями.
• Макет. Несколько важных классов в Windows Forms помогают контролировать
расположение элементов управления на отображаемой поверхности, например в
форме или элементе управления.
• Данные и привязка данных. Windows Forms обеспечивает расширенную архитектуру
для привязывания к таким источникам данных, как базы данных и XML-файлы.
• Компоненты. Помимо элементов управления пространство имен
System.Windows.Forms предоставляет другие классы, которые не являются
производными от класса Control, но также обеспечивают визуальные функции для
приложений Windows.
• Общие диалоговые окна.
Полный список содержимого System.Windows.Forms можно найти
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.aspx
21. http://www.slideshare.net/IgorShkulipa 21
Основные элементы управления
TextBox
Позволяет пользователю вводить изменяемый текст, состоящий из
нескольких строк.
ToolStripTextBox
Позволяет пользователю вводить изменяемый текст, состоящий из
нескольких строк.
RichTextBox
Служит для ввода и отображения текста с форматированием, а также для
выполнения с ним различных действий пользователем.
Label Отображает текст, который не может быть изменен пользователем.
ToolStripLabel Отображает текст, который не может быть изменен пользователем.
LinkLabel Позволяет добавлять веб-ссылки в приложения форм Windows Forms.
StatusBar
Отображает сведения о состоянии элемента управления, на котором
находится фокус.
ToolStripStatusLabel
Отображение сведений о состоянии элемента управления, на котором
находится фокус.
CheckedListBox Отображает список элементов, рядом с каждым из которых стоит галочка.
ComboBox Отображает данные в раскрывающемся поле со списком.
ToolStripComboBox Отображает данные в раскрывающемся поле со списком.
DomainUpDown
Отображает текстовые строки, которые пользователь может просматривать
и выделять.
ListBox Отображает список текстовых и графических элементов (значков).
ListView Отображает список элементов со значками наподобие проводника Windows.
NumericUpDown Отображает числа, которые пользователь может просматривать и выделять.
TreeView Отображает иерархию узлов, которые можно разворачивать и сворачивать.
22. http://www.slideshare.net/IgorShkulipa 22
Основные элементы управления
PictureBox Отображает рисунки в формате BMP, GIF, JPEG, метафайлов и значков.
ImageList Отображает рисунки на других элементах управления.
CheckBox Указывает, включено ли какое-либо условие или выключено.
CheckedListBox Отображает список элементов, рядом с каждым из которых стоит флажок.
RadioButton
Предоставление набора как минимум из двух взаимоисключающих вариантов
выбора для пользователя.
TrackBar
Перемещение по тексту большого объема или наглядная настройка числового
параметра.
DateTimePicker Позволяет пользователю выбрать отдельный элемент в списке дат или времени.
MonthCalendar
Предоставляет понятный графический интерфейс для просмотра и задания
сведений о дате пользователями.
ColorDialog
Предоставляет стандартное диалоговое окно для выбора цветов из палитры, а
также для добавления в нее дополнительных цветов.
FolderBrowserDialog
Отображает интерфейс, который пользователь может просматривать и в котором
он может выбирать существующие папки и создавать новые.
FontDialog
Предоставляет приложениям шрифты, установленные в системе на текущий
момент.
OpenFileDialog Позволяет пользователям открывать файлы в стандартном диалоговом окне.
PageSetupDialog Задает параметры страницы для печати в стандартном диалоговом окне.
PrintDialog Определяет принтер, страницы на печать и другие параметры печати.
PrintDocument
Задает свойства, описывающие материал на печать, и печатает документ в
приложениях Windows.
PrintPreviewControl
Служит для создания собственного компонента или диалогового окна
PrintPreview взамен стандартного.
PrintPreviewDialog Отображает документ в том виде, как он будет выглядеть при печати.
SaveFileDialog Определяет сохраняемые файлы и их расположение.
23. http://www.slideshare.net/IgorShkulipa 23
Основные элементы управления
MainMenu Выводит меню во время выполнения.
MenuStrip Выводит меню во время выполнения.
ContextMenu
Предоставляет пользователю удобное меню часто используемых команд,
применимых к выделенному объекту.
ContextMenuStrip
Предоставляет пользователю удобное меню часто используемых команд,
применимых к выделенному объекту.
Button
Описание стандартной кнопки, нажимаемой пользователем для выполнения
каких-либо действий.
LinkLabel Позволяет добавлять веб-ссылки в приложения форм Windows Forms.
NotifyIcon
Отображает значки для процессов, которые выполняются в фоновом режиме и
не имеют иных пользовательских интерфейсов.
ToolBar Отображает меню и кнопок с точечными рисунками для выполнения команд.
ToolStrip
Позволяет создавать пользовательские панели инструментов и меню в
приложениях Windows Forms.
Panel
Предоставляет возможность группировки других элементов по смыслу и их
прокрутки.
GroupBox Предоставляет возможность группировки других элементов по смыслу.
TabControl Отображает вкладки, содержащие рисунки и другие элементы управления.
DataGrid
Отображает данные из набора данных в виде таблицы, позволяет обновлять
источник данных.
DataGridView
Предоставляет пользовательский интерфейс для наборов данных ADO.NET,
отображение табличных данных, поддержка обновлений источника данных.
24. http://www.slideshare.net/IgorShkulipa 24
Основные элементы управления
HScrollBar
Предоставляет возможность перемещения по списку элементов или в тексте
большого объема с помощью горизонтальной прокрутки окна приложения
или элемента управления.
VScrollBar
Предоставляет возможность перемещения по списку элементов или в тексте
большого объема с помощью вертикальной прокрутки окна приложения или
элемента управления.
ErrorProvider Отображает сведения об ошибке для пользователя в фоновом режиме.
HelpProvider Связывает справочный HTML-файл с приложением Windows.
WebBrowser
Содержит веб-страницы и обеспечивает приложению возможности просмотра
веб-узлов в Интернете.
BackgroundWorker
Позволяет выполнять длительные операции в фоновом режиме в потоке,
отличном от основного потока пользовательского интерфейса приложения.
ProgressBar Графическое отображение процесса выполнения действия.
ToolStripProgressBar Графическое отображение процесса выполнения действия.
SplitContainer
Позволяет пользователю изменять размер закрепленного элемента
управления.
Timer Вызывает событие через определенные интервалы.
ToolTip
Отображение текста при наведении указателя мыши на другие элементы
управления.
25. http://www.slideshare.net/IgorShkulipa 25
Свойства System.Windows.Forms.Control
AccessibilityObject Получает объект AccessibleObject, назначенный элементу управления.
AccessibleDefaultActionD
escription
Получает или задает описание действия по умолчанию элемента управления
для использования клиентскими приложениями специальных возможностей.
AccessibleDescription
Возвращает или задает описание элемента управления, используемого
клиентскими приложениями со специальными возможностями.
AccessibleName
Возвращает или задает имя элемента управления, используемого клиентскими
приложениями со специальными возможностями.
AccessibleRole
Возвращает или задает роль элемента управления в поддержке специальных
возможностей.
AllowDrop
Возвращает или задает значение, указывающее, может ли элемент управления
принимать данные, перетаскиваемые в него пользователем.
Anchor
Возвращает или задает границы контейнера, с которым связан элемент
управления, и определяет способ изменения размеров элемента управления
при изменении размеров его родительского элемента.
AutoScrollOffset
Возвращает или задает местоположение, в котором выполняется прокрутка
этого элемента управления в ScrollControlIntoView.
AutoSize Инфраструктура. Данное свойство не относится к этому классу.
BackColor Получает или задает цвет фона для элемента управления.
BackgroundImage
Возвращает или задает фоновое изображение, выводимое на элементе
управления.
BackgroundImageLayout
Получает или задает макет фонового изображения в соответствии с
перечислением ImageLayout.
BindingContext Возвращает или задает объект BindingContext для элемента управления.
Bottom
Получает расстояние (в пикселях) между нижней границей элемента
управления и верхней границей клиентской области контейнера.
Bounds
Возвращает или задает размер и местоположение (в пикселях) элемента
управления, включая его неклиентские элементы, относительно его
родительского элемента управления.
26. http://www.slideshare.net/IgorShkulipa 26
Свойства System.Windows.Forms.Control
CanEnableIme
Получает значение, указывающее, можно ли для свойства ImeMode установить
активное значение с целью включения поддержки IME.
CanFocus
Получает значение, показывающее, может ли элемент управления получать
фокус.
CanRaiseEvents
Определяет, могут ли вызываться события в элементе управления.
(Переопределяет Component.CanRaiseEvents.)
CanSelect Получает значение, показывающее, доступен ли элемент управления для выбора.
Capture
Возвращает или задает значение, определяющее, была ли мышь захвачена
элементом управления.
CausesValidation
Возвращает или задает значение, показывающее, вызывает ли элемент
управления выполнение проверки.
CheckForIllegalCros
sThreadCalls
Возвращает или задает значение, показывающее, нужно ли перехватывать
вызовы в ошибочном потоке, который осуществляет доступ к свойству Handle
элемента управления во время отладки.
ClientRectangle
Получает прямоугольник, представляющий клиентскую область элемента
управления.
ClientSize
Возвращает или задает высоту и ширину клиентской области элемента
управления.
CompanyName
Получает название организации или имя создателя приложения, содержащего
элемент управления.
Container
Возвращает контейнер IContainer, содержащий компонент Component.
(Унаследовано от Component.)
ContainsFocus
Получает значение, указывающее, имеет ли элемент управления или один из его
дочерних элементов фокус ввода в данный момент.
ContextMenu
Возвращает или задает контекстное меню, сопоставленное с элементом
управления.
ContextMenuStrip
Возвращает или задает объект ContextMenuStrip, сопоставленный с этим
элементом управления.
27. http://www.slideshare.net/IgorShkulipa 27
Свойства System.Windows.Forms.Control
Controls
Получает коллекцию элементов управления, содержащихся в элементе
управления.
Created Получает значение, показывающее, был ли создан элемент управления.
CreateParams
Получает параметры, необходимые для создания дескриптора элемента
управления.
Cursor
Возвращает или задает курсор, отображаемый, когда указатель мыши
находится на элементе управления.
DataBindings Получает привязки данных для этого элемента управления.
DefaultBackColor Получает используемый по умолчанию цвет фона элемента управления.
DefaultCursor Получает или задает курсор по умолчанию для элемента управления.
DefaultFont Получает шрифт элемента управления, используемый по умолчанию.
DefaultForeColor
Получает основной цвет элемента управления, используемый по
умолчанию.
DefaultImeMode
Возвращает стандартный режим редактора методов ввода, поддерживаемый
данным элементом управления.
DefaultMargin
Получает размер пустого пространства (в пикселях), по умолчанию
оставляемого между элементами управления.
DefaultMaximumSize
Получает длину и высоту (в пикселях), которые были указаны в качестве
максимального размера элемента управления по умолчанию.
DefaultMinimumSize
Получает длину и высоту (в пикселях), которые были указаны в качестве
минимального размера элемента управления по умолчанию.
DefaultPadding
Получает внутренние промежутки в содержимом элемента управления в
пикселях.
DefaultSize Получает размер элемента управления по умолчанию.
DesignMode
Возвращает значение, указывающее, находится ли данный компонент
Component в режиме конструктора в настоящее время. (Унаследовано от
Component.)
28. http://www.slideshare.net/IgorShkulipa 28
DisplayRectangle
Получает прямоугольник, представляющий отображаемую область элемента
управления.
Disposing
Получает значение, указывающее, находится ли базовый класс Control в
процессе удаления.
Dock
Возвращает или задает границы элемента управления, прикрепленные к его
родительскому элементу управления, и определяет способ изменения размеров
элемента управления с его родительским элементом управления.
DoubleBuffered
Возвращает или задает значение, указывающее, должна ли поверхность этого
элемента управления перерисовываться с помощью дополнительного буфера,
чтобы уменьшить или предотвратить мерцание.
Enabled
Возвращает или задает значение, показывающее, сможет ли элемент
управления отвечать на действия пользователя.
Events
Возвращает список обработчиков событий, которые прикреплены к этому
объекту Component. (Унаследовано от Component.)
Focused
Получает значение, показывающее, имеется ли в элементе управления фокус
ввода.
Font Возвращает или задает шрифт текста, отображаемого элементом управления.
FontHeight Возвращает или задает высоту шрифта элемента управления.
ForeColor Получает или задает основной цвет элемента управления.
Handle Получает дескриптор окна, с которым связан элемент управления.
HasChildren
Получает значение, определяющее, содержит ли элемент управления один или
несколько дочерних элементов.
Height Возвращает или задает высоту элемента управления.
ImeMode Возвращает или задает режим редактора метода ввода элемента управления.
ImeModeBase Получает или задает режим IME элемента управления.
Свойства System.Windows.Forms.Control
29. http://www.slideshare.net/IgorShkulipa 29
Свойства System.Windows.Forms.Control
InvokeRequired
Получает значение, показывающее, следует ли вызывающему оператору
обращаться к методу invoke во время вызовов метода из элемента
управления, так как вызывающий оператор находится не в том потоке, в
котором был создан элемент управления.
IsAccessible
Возвращает или задает значение, показывающее, является ли элемент
управления видимым для приложений со специальными возможностями.
IsDisposed Получает значение, показывающее, был ли удален элемент управления.
IsHandleCreated
Получает значение, показывающее, имеется ли у элемента управления
сопоставленный с ним дескриптор.
IsMirrored
Получает значение, показывающее, отображается ли зеркально элемент
управления.
LayoutEngine
Получает кэшированный экземпляр механизма размещения элемента
управления.
Left
Возвращает или задает расстояние (в пикселях) между левой границей
элемента управления и левой границей клиентской области его контейнера.
Location
Получает или задает координаты левого верхнего угла элемента управления
относительно левого верхнего угла контейнера.
Margin Получает или задает расстояние между элементами управления.
MaximumSize
Возвращает или задает размер, являющийся верхней границей, которую
может указать метод GetPreferredSize.
MinimumSize
Возвращает или задает размер, являющийся нижней границей, которую
может указать метод GetPreferredSize.
ModifierKeys
Получает значение, указывающее, какая из клавиш-модификаторов (SHIFT,
CTRL и ALT) находится в нажатом состоянии.
MouseButtons
Получает значение, указывающее, какая из кнопок мыши находится в
нажатом состоянии.
MousePosition Получает позицию указателя мыши в экранных координатах.
30. http://www.slideshare.net/IgorShkulipa 30
Свойства System.Windows.Forms.Control
Name Возвращает или задает имя элемента управления.
Padding Возвращает или задает заполнение в элементе управления.
Parent Возвращает или задает родительский контейнер элемента управления.
PreferredSize
Получает размер прямоугольной области, в которую может поместиться
элемент управления.
ProductName Получает имя продукта сборки, содержащей элемент управления.
ProductVersion Получает версию сборки, содержащую элемент управления.
PropagatingImeMode Получает объект, представляющий режим IME распространения.
RecreatingHandle
Получает значение, показывающее, осуществляется ли в данный момент
повторное создание дескриптора элементом управления.
Region
Возвращает или задает область окна, сопоставленную с элементом
управления.
RenderRightToLeft Устаревший. Это свойство устарело.
ResizeRedraw
Возвращает или задает значение, указывающее, перерисовывается ли
элемент управления при изменении размеров.
Right
Получает расстояние (в пикселях) между правой границей элемента
управления и левой границей клиентской области его контейнера.
RightToLeft
Получает или задает значение, показывающее, выровнены ли компоненты
элемента управления для поддержки языков, использующих шрифты с
написанием справа налево.
ScaleChildren
Получает значение, определяющее масштабирование дочерних элементов
управления.
ShowFocusCues
Получает значение, показывающее, должен ли элемент управления
отображать прямоугольники фокуса.
ShowKeyboardCues
Получает значение, указывающее, имеет ли пользовательский интерфейс
соответствующее состояние, при котором отображаются или скрываются
сочетания клавиш.
31. http://www.slideshare.net/IgorShkulipa 31
Свойства System.Windows.Forms.Control
Site
Возвращает или задает подложку элемента управления. (Переопределяет
Component.Site.)
Size Возвращает или задает высоту и ширину элемента управления.
TabIndex
Возвращает или задает последовательность перехода элемента управления
внутри контейнера.
TabStop
Получает или задает значение, показывающее, может ли пользователь
перевести фокус в данный элемент управления при помощи клавиши TAB.
Tag Получает или задает объект, содержащий данные элемента управления.
Text Получает или задает текст, сопоставленный с этим элементом управления.
Top
Возвращает или задает расстояние (в пикселях) между верхней границей
элемента управления и верхней границей клиентской области его контейнера.
TopLevelControl
Получает родительский элемент управления, не имеющий другого родительского
элемента управления Windows Forms. Как правило, им является внешний объект
Form, в котором содержится элемент управления.
UseWaitCursor
Возвращает или задает значение, указывающее, следует ли использовать
курсор ожидания для текущего элемента управления и всех дочерних элементов
управления.
Visible
Получает или задает значение, указывающее, отображаются ли элемент
управления и все его дочерние элементы управления.
Width Возвращает или задает ширину элемента управления.
WindowTarget Инфраструктура. Данное свойство не относится к этому классу.
35. http://www.slideshare.net/IgorShkulipa 35
Лабороторная работа №8. Windows Forms
Создать приложение для синхронизации файлов в разных директориях
(например, директория на жестком диске и на флеш-накопителе).
Реализовать функции (с одной и другой стороны):
• Файл изменен
• Файл удален
• Файл создан
Интерфейс приложения создать на основе архитектурного шаблона MVP с
использованием Windows Forms.