Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка на языке C# приложений с графическим интерфейсом : использование Windows Forms

Покупка
Артикул: 753139.01.99
Доступ онлайн
2 000 ₽
В корзину
Алгоритмические языки высокого уровня - это основа и фундамент для разработки сложных информационных комплексов и систем. Эта область знаний имеет как теоретическое направление (процедурный и объектно-ориентированный подход к анализу предметной области), так и практико-ориентированное (синтез информационной системы с помощью инструментов процедурной или объектно-ориентированной разработки). Для усвоения материала учебника необходимы базовые знания и навыки в алгоритмизации и реализации программ на C# на основе объектно-ориентированного подхода. Представленный материал дает как теоретические знания, так и практические навыки по разработке приложений в среде Visual Studio (2005-2017) на языке программирования С#. Предназначен для студентов, обучающихся в бакалавриате по направлениям подготовки 01.03.04 «Прикладная математика», 09.03.02 «Информационные системы и технологии», 09.03.03 «Прикладная информатика».
Мурадханов, С. Э. Разработка на языке C# приложений с графическим интерфейсом : использование Windows Forms : учебник / С. Э. Мурадханов. - Москва : Изд. Дом НИТУ «МИСиС», 2019. - 396 с. - ISBN 978-5-907061-36-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/1232758 (дата обращения: 16.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Москва  2019
МИНИС ТЕРС ТВО НАУКИ И ВЫСШ ЕГО О Б РА З О ВА Н И Я РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»
ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И АВТОМАТИЗИРОВАННЫХ  
СИСТЕМ УПРАВЛЕНИЯ
Кафедра автоматизированных систем управления
С.Э. Мурадханов 
РАЗРАБОТКА НА ЯЗЫКЕ C#  
ПРИЛОЖЕНИЙ С ГРАФИЧЕСКИМ  
ИНТЕРФЕЙСОМ  
(использование Windows Forms)
Учебник
Рекомендовано редакционно-издательским 
советом университета
№ 2997
УДК  
681.3 
М91
Р е ц е н з е н т ы  : 
канд. техн. наук, доц. С.В. Никифоров
канд. техн. наук, доц. С.В. Громов
Мурадханов С.Э.
М91  
Разработка на языке C# приложений с графическим интерфей-
сом (использование Windows Forms): учебник / С.Э. Мурадха-
нов. – М. : Изд. Дом НИТУ «МИСиС», 2019. – 396 с.
ISBN 978-5-907061-36-1
Алгоритмические языки высокого уровня – это основа и фундамент для 
разработки сложных информационных комплексов и систем. Эта область 
знаний имеет как теоретическое направление (процедурный и объектно-ори-
ентированный подход к анализу предметной области), так и практико-ориен-
тированное (синтез информационной системы с помощью инструментов про-
цедурной или объектно-ориентированной разработки). 
Для усвоения материала учебника необходимы базовые знания и навыки 
в алгоритмизации и реализации программ на C# на основе объектно-ориенти-
рованного подхода. Представленный материал дает как теоретические знания, 
так и практические навыки по разработке приложений в среде Visual Studio 
(2005–2017) на языке программирования С#. 
Предназначен для студентов, обучающихся в бакалавриате по направлени-
ям подготовки 01.03.04 «Прикладная математика», 09.03.02 «Информацион-
ные системы и технологии», 09.03.03 «Прикладная информатика».
УДК 681.3

С.Э. Мурдаханов, 2019
ISBN 978-5-907061-36-1

НИТУ «МИСиС», 2019
Оглавление
Предисловие ..............................................................................................7
1. Визуальный интерфейс-приложения Windows Forms .......................8
1.1. Описание графического интерфейса .............................................. 8
1.1.1.Описание графического интерфейса ОС Windows 
................. 9
1.1.2. Реализация графического интерфейса в .Net.........................11
1.1.3. Система координат и единиц измерения............................... 16
1.1.4. Стандартный тип обработчика события ............................... 17
1.1.5. Взаимодействие пользователя с приложением .................... 17
1.2. Простое приложение Windows Forms 
........................................... 19
1.2.1. Структура и состав «пустого» приложения  
Windows Forms ................................................................................... 20
1.2.3. Приложение,  созданное только с помощью кода 
................ 35
1.3. Класс Application ( управление приложением) 
............................ 41
1.4. Класс форм Form 
............................................................................. 51
1.4.1. Создание и уничтожение формы ........................................... 60
1.4.2. Модальные и немодальные формы 
........................................ 60
1.4.3. Многодокументный интерфейс MDI  
(Multiple Document Interface) 
............................................................ 61
1.4.4. Стандартные диалоги .............................................................. 63
2. Основные классы элементов управления .......................................101
2.1. Кнопки, флажки, переключатели ................................................ 101
2.1.1. Класс кнопок Button .............................................................. 101
2.1.2. Класс флажков CheckBox...................................................... 104
2.1.3. Класс переключателей RadioButton 
..................................... 104
2.2. Метки, индикаторы, ползунки, регуляторы,  
строки с выбором, окно подсказки..................................................... 105
2.2.1. Класс Label  (надпись) 
........................................................... 105
2.2.2. Класс LinkLabel (надпись с гиперссылкой) 
........................ 106
2.2.3. Класс ProgressBar – индикатор процесса  
выполнения 
....................................................................................... 109
2.2.4. Класс TrackBar – ползунок (бегунок) ...................................110
2.2.5. Классы HScrollBar и VscrollBar – полосы прокрутки ........111
2.2.6. Класс NumericUpDown – числовое поле с выбором ..........112
2.2.7. Класс DomainUpDown – текстовое поле с выбором 
...........113
2.2.8. Класс ToolTip – окно всплывающей подсказки 
...................114
2.3. Классы текстовых полей TextBox, RichTextBox  
и MaskedTextBox .................................................................................. 120
2.4. Классы списков ListBox, ComboBox, CheckedListBox ............. 124
2.5. Классы контейнеров...................................................................... 131
2.5.1. Класс GroupBox ..................................................................... 132
2.5.2. Класс Panel 
.............................................................................. 132
2.5.3. Классы FlowLayoutPanel и TableLayoutPanel ..................... 132
2.5.4. Класс SplitContainer ............................................................... 134
2.5.5. Класс Splitter 
........................................................................... 134
2.5.6. Классы страниц с ярлыками TabControl и TabPages 
.......... 135
2.5.7. Класс ImageList ...................................................................... 136
2.5.8. Класс PictureBox .................................................................... 137
2.5.9. Класс PropertyGrid – браузер свойств 
.................................. 139
2.6. Класс ListView – список с расширенными 
 возможностями 
.................................................................................... 146
2.7. Класс TreeView – дерево объектов .............................................. 184
2.8.1. Класс MonthCalendar – календарь 
........................................ 207
2.8.2. Класс DateTimePicker – ввод и отображение  
даты/времени .................................................................................... 208
2.8.3. Класс ErrorProvider – сигнализатор ошибок 
....................... 209
2.8.4. Класс HelpProvider – поставщик справочной  
информации ...................................................................................... 212
2.8.5. Класс Notifylcon – извещающая пиктограмма (значок) .... 212
2.8.6. Класс Timer – таймер 
............................................................. 213
2.8.7. Класс BackgroundWorker – выполнение действий  
в потоке ............................................................................................. 215
2.9. Меню и инструментальные панели  ........................................... 226
2.9.1. Класс MenuStrip – компонент для создания меню 
............. 227
2.9.2. Класс ContextMenuStrip – контекстное меню 
..................... 230
2.9.3. Класс ToolStrip – панель инструментальных кнопок ........ 233
2.9.4. Классы StatusStrip,  ToolStripManager,  
ToolStripContainer 
............................................................................. 235
2.10. Работа с мышью и клавиатурой  ............................................... 248
2.10.1. Обработка событий клавиатуры ........................................ 248
2.10.2. Обработка событий мыши 
.................................................. 256
3.  Использование графики...................................................................292
3.1. Контекст отображения 
.................................................................. 293
3.2. Рисование на компоненте управления 
........................................ 295
3.2.1. Событие Paint для перерисовки клиентской области 
компонента 
........................................................................................ 296
3.2.2. Классы описания геометрических объектов – Point, 
Rectangle, Region .............................................................................. 299
3.3. Классы Graphics и GraphicsPath  
для работы с графикой 
......................................................................... 305
3.4. Инструменты рисования .............................................................. 321
3.4.1. Класс Сolor – работа с цветом 
.............................................. 321
3.4.2. Класс Pen – работа с перьями 
............................................... 322
3.4.3. Класс Font – работа со шрифтами ....................................... 324
3.5. Класс Brush – работа с кистями 
................................................... 326
3.5.1. Кисти для сплошной закраски Brush и SolidBrush ............ 326
3.5.2. Кисть HatchBrush ................................................................... 326
3.5.3. Кисть TextureBrush................................................................. 329
3.5.4. Градиентные кисти  LinearGradientBrush 
и PathGradientBrush 
.......................................................................... 331
3.6. Методы рисования ........................................................................ 334
3.6.1. Методы DrawLine и DrawLines – рисование линий .......... 335
3.6.2. Методы DrawRectangle и DrawRectangles – рисование 
прямоугольников 
.............................................................................. 338
3.6.3. Метод DrawPolygon – рисование многоугольников .......... 340
3.6.4. Метод DrawEllipse – рисование эллипсов 
........................... 341
3.6.5. Метод DrawArc – рисование сегмента эллипса ................. 342
3.6.6. Метод DrawPie – рисование замкнутого  
сегмента эллипса 
.............................................................................. 343
3.6.7. Методы DrawBezier и DrawBeziers – рисование кривых 
Безье................................................................................................... 345
3.6.8. Методы DrawCurve, DrawClosedCurve – рисование 
канонических сплайнов 
................................................................... 346
3.6.9. Методы FillRectangle и FillRectangles – закрашивание 
прямоугольников  
............................................................................. 348
3.6.10. Метод FillPolygon – закрашивание многоугольников ..... 352
3.6.11. Метод FillEllipse – закрашивание эллипсов 
...................... 353
3.6.12. Метод DrawPie – закрашивание сегмента эллипса 
.......... 354
3.6.13. Метод FillClosedCurve – закрашивание канонических 
сплайнов 
............................................................................................ 356
3.6.14. Метод FillRegion – закрашивание области  
объекта Region 
.................................................................................. 358
3.6.15. Метод DrawPath и FillPath – рисование  
и закрашивание GraphicsPath ......................................................... 359
3.6.16. Методы работы с растровыми и векторными 
изображениями 
................................................................................. 361
3.6.17. Метод DrawIcon для рисования значков (иконок) ........... 366
3.6.18. Метод DrawImage для рисования изображений 
............... 367
3.6.19. Методы рисования текста ................................................... 379
Библиографический список .................................................................393
ПРЕДИСЛОВИЕ
Современное развитие общества предполагает широкое исполь-
зование информационных технологий в различных сферах деятель-
ности. Знания в области информационных технологий и их умелое 
использование – сегодня обеспечивают конкурентоспособность спе-
циалиста.
Учебник предназначен для приобретения компетенций в области 
алгоритмизации задач и разработки приложений на базе объектно-
ориентированного подхода с использованием языка программирова-
ния C#, предназначенного для разработки приложений, выполняемых 
в среде .NET Framework. Приобретаемые при изучении учебника на-
выки являются необходимым этапом для дальнейшего изучения воз-
можностей платформы Microsoft .NET Framework.
Учебник предназначен как для студентов, изучающих программи-
рование, так и для желающих самостоятельно освоить язык програм-
мирования C#. Книга посвящена основам языка, без знания которых 
невозможно его практическое применение.
1. ВИЗУ
АЛЬНЫЙ ИНТЕРФЕЙС-
ПРИЛОЖЕНИЯ WINDOWS FORMS
Любое приложение всегда имеет набор средств для взаимодей-
ствия с пользователем – интерфейс пользователя. С помощью интер-
фейса-приложения пользователь может описать решаемую задачу, 
выполнить ее решение, сохранить полученные результаты на внеш-
нем устройстве. Приложения, использующие графический интерфейс 
(Graphic User Interface – GUI) называются Windows приложениями 
(или Windows Forms Application). Для взаимодействия с пользовате-
лями они используют класс Form. Так как в платформе .Net все осно-
вано на объектно-ориентированном подходе, то графический интер-
фейс реализован в виде специальных классов FCL пространства имен 
System.Windows.Forms.
1.1. Описание графического интерфейса
Общая схема приложений, разрабатываемых для операционных 
систем (ОС) Windows, показана на рис. 1.1. 
Рис. 1.1. Структура типичного приложения
Программа состоит из классов (типов), которые условно разделены 
на классы, реализующие взаимодействие приложения с пользовате-
лем (интерфейс пользователя), и классы, моделирующие предметную 
область решаемой задачи. Кроме собственных классов приложение 
использует классы библиотеки платформы FCL. Результаты работы 
приложения обычно сохраняются на внешних устройствах, в файлах 
или базах данных.
1.1.1.Описание графического интерфейса ОС Windows
Графический интерфейс пользователя реализует и поддерживает 
ОС. Основным понятием GUI является «окно» (window), схема кото-
рого показана на рис. 1.2. На экране окна представляют собой некото-
рые участки (обычно прямоугольные), в которых выполняется ввод и 
вывод информации и где могут размещаться другие окна (дочерние), 
с помощью которых выполняется управление программой.
Рис. 1.2. Основные элементы окна
Созданием и управлением окнами занимается ОС, которая первой 
получает информацию от всех устройств компьютера (нажатие клави-
ши, движение мыши, поступление данных по сети). Обо всех собы-
тиях ОС рассылает сообщения приложениям, окна которых являются 
активными в текущий момент. Для этого во всех Windows приложе-
ниях, работающих с окнами, ОС создает специальные коллекции вида 
FIFO (очереди сообщений), в которые записываются все сообщения 
о событиях, произошедших в ПК и связанных с окнами данного при-
ложения. Приложение постоянно следит за сообщениями, поступаю-
щими в эту очередь, и выполняет их обработку. 
Окно приложения включает следующие основные части:
• строка заголовка окна  для размещения стандартных элемен-
тов управления окном (системное меню, появляющееся при щелчке 
на иконке приложения в левой части строки; три системные кноп-
ки для свертывания окна, раскрытия окна на весь экран и закрытия 
окна);
• строка меню приложения – набор команд (пунктов меню), при 
выборе которых приложение будет выполнять различные задачи 
(строка меню может располагаться в разных частях окна, чаще всего 
находится в его верхней части);
• инструментальные полосы (строки с наборами специальных 
дочерних окон – элементов управления), с помощью которых также 
можно вызывать выполнение различных задач приложения (инстру-
ментальных полос в интерфейсе приложения может быть много и они 
могут размещаться в разных частях окна);
• 
клиентская область – часть 
окна, в которой можно размещать раз-
личные элементы графического интер-
фейса и выполнять рисование; 
• 
строка состояния для вывода 
сообщений, информирующих пользо-
вателя о ходе выполнения приложения 
при работе с ним.
Приложение 
обычно 
использу-
ет окна, которые можно разделить 
на группы:
• 
основные окна, которые ис-
пользуются для представления всего 
приложения; они включают основные 
элементы интерфейса и инициируют 
создание других окон;
• 
диалоговые 
окна, 
которые 
предназначены для получения инфор-
мации и запуска на выполнение раз-
личных вспомогательных задач прило-
жения;
• элементы управления (control) – дочерние окна, которые исполь-
зуются для выполнения элементарных операций по отображению 
информации (текстовые окна – TextBox, окна со списками строк – 
ListBox, окна с изображениями PictureBox) или для получения (об-
работки) некоторых команд пользователя (например, нажатия кнопок 
мыши, кнопок Button, пунктов меню).
Платформа .Net предоставляет набор объектно-ориентированных 
средств для удобной и простой реализации всех частей графического 
интерфейса.
1.1.2. Реализация графического интерфейса в .Net
В платформе .Net для реализации графического интерфейса ис-
пользуются разные технологии, такие как Windows Forms и Windows 
Presentation Foundation (WPF). Технология Windows Forms включает 
множество типов (классы, структуры, перечисления, делегаты), ко-
торые объединены в два пространства имен: System.Windows.Forms 
(для реализации интерфейса) и System.Drawing (для рисования в кли-
ентской области).
Основными элементами графического интерфейса являются спе-
циальные классы, называемые элементами управления, которые обла-
дают двумя особенностями:
1) реализуют работу с различными типами окон ОС Windows;
2) поддерживают работу в двух режимах:
• режим проектирования (design mode), в котором с ними работает 
среда разработки;
• режим выполнения (run mode), в котором выполняется взаимо-
действие пользователей с элементами управления.
Базовым классом для всех элементов управления является класс 
Control, реализующий самую базовую функциональность. Класс 
Control задает важные свойства, методы и события, наследуемые все-
ми его потомками. Все классы элементов управления (ЭУ) являются 
наследниками класса Control. Базовый класс Control содержит интер-
фейс, который доступен во всех производных классах. Основные эле-
менты данного класса используются при работе со всеми элементами 
управления (табл. 1.1).
Таблица 1.1
Основные элементы базового класса Control
Свойства
Описание
Name
Имя для работы с элементом управления в среде разработки
Left,Top, 
Right,Bottom
Координаты точек левого верхнего угла и правого нижнего 
угла (по умолчанию в пикселях относительно окна роди-
теля)
Location
Задание или получение координаты левого верхнего угла 
в виде объекта структуры Point (по умолчанию в пикселях)
Height,Width
Высота и ширина окна (по умолчанию в пикселях)
Size
Размер окна в виде объекта структуры Size
Controls
Коллекция дочерних ЭУ
, которые будут отображаться в 
текущем окне (поддерживает интерфейс Ilist)
ContextMenu
Ссылка на контекстное меню
Cursor
Ссылка на курсор
Parent
Ссылка на родительское окно (если оно есть)
Text
Заголовок окна
Font
Используемый шрифт
TabIndex
Порядок перехода между ЭУ при нажатии клавиши Tab
Dock, 
DockStyle
Указывает, может ли ЭУ прикрепляться к сторонам ро-
дительского окна (true, false); свойство DockStyle задает 
стороны, к которым должен прикрепляться ЭУ: Top, Bottom 
, Right , Left , Fill или None
Anchor
AnchorStyle
Связывание со стороной родительского окна; отличается от 
причаливания Dock тем, что не прикрепляется к стороне, а 
находится на фиксированном расстоянии от нее; значения 
AnchorStyle такие же, как и у DockStyle
BackColor, ForeColor
Фоновый цвет и цвет рисования
Capture
Определяет, будет ли ЭУ перехватывать сообщения мыши, 
даже если ее указатель находится вне границ ЭУ
BackGroundImage
Определяет фоновый рисунок
Focused
Возвращает true, если ЭУ имеет фокус ввода
CanFocus
Содержит true, если ЭУ может получать фокус ввода
CanSelect
Содержит true, если ЭУ может выбираться
нажатием клавиши Tab
ContainsFocus
Возвращает true, если ЭУ или один из его дочерних элемен-
тов имеет фокус ввода
Bounds
Определяет границы ЭУ
, включая его неклиентскую об-
ласть
ClientRectangle
Возвращает размеры и положение клиентской области ЭУ
ClientSize
Определяет размеры клиентской области ЭУ
Свойства
Описание
HasChildren
Возвращает true, если ЭУ имеет хотя бы один дочерний 
элемент
ModifierKeys
Показывает, нажата ли клавиша модификации (Shift, Ctrl, 
Alt)
MouseButtons
Возвращает состояние кнопок мыши
MousePosItion
Возвращает координаты указателя мыши относительно 
верхнего левого угла экрана
Region
Определяет область, которую занимает ЭУ
ResizeRedraw    
Содержит true, если ЭУ будет отрисовывать себя сам при 
изменении размеров
TopLevelControl
Возвращает левый верхний дочерний ЭУ
Методы
Описание
Show()
Отображение окна на экране
Hide()
Скрытие окна
CreateGrafics
Создание объекта класса Graphics для рисования в окне
Update()
Обновление содержания окна
Invalidate()
Заставляет ЭУ отрисовать себя заново (ОС отправляет 
сообщение WM_PAINT о необходимости перерисовки содержания 
окна)
ClearChildViewState()
Делает невидимыми все дочерние ЭУ
Contains
Возвращает true, если ЭУ является дочерним
CreateControl()
Создает ЭУ и все его дочерние элементы
Dispose()
Освобождает все связанные с элементом управления ресурсы

FindForm()
Возвращает форму, которая владеет элементом управления
Focus()
Передает ЭУ фокус ввода
GetChildAtPoint()
Возвращает дочерний ЭУ
, располагающийся в указанной 
точке
GetNextControl()
Возвращает следующий (Forward=true) или предыдущий 
по отношению к ЭУ элемент в порядке обхода по нажатию 
клавиши Tab
IsInputKey()
Возвращает true, если полученный код является кодом 
обычной клавиши (а не клавиш PageUp, PageDown, Enter, 
Esc и Tab, а также клавиш управления курсором)
PointToClient()
Преобразует экранные координаты в координаты клиент-
ской области компонента
PointToScreen()
Преобразует координаты клиентской области ЭУ в экран-
ные координаты
RectangleToClient()
Преобразует экранные координаты в координаты клиент-
ской области ЭУ
Продолжение табл. 1.1
Методы
Описание
RectangleToScreen()
Преобразует координаты клиентской области ЭУ в экран-
ные координаты
SetBounds()
Устанавливает новое положение и размеры ЭУ
SetStyle(ControlStyles 
Flag, bool Value)
Устанавливает или сбрасывает указанный стилевой признак
Метод SetStyle работает с перечислением ControlStyles, которое имеет атрибут  
FlagsAttribut, что позволяет объединять сразу несколько членов в одном значении
AllPaintingInWmPaint Если установлен, то ЭУ игнорирует сообщение
WM ERASEBKGND, что уменьшает мерцание при от-
рисовке.
Игнорируется, если не установлен флаг UserPaint
CacheText
Если установлен, то ЭУ сохраняет копию текста в буфере. 
По умолчанию флаг сброшен, что повышает производи-
тельность, но затрудняет синхронизацию текста
ContdinerControl 
Если установлен, то ЭУ может иметь дочерние компоненты
DoubleBuffer 
Если установлен, то отрисовка ЭУ сначала происходит в бу-
фере и по окончании готовое изображение выводится. Это 
уменьшает мерцание. Для двойной буферизации необходи-
ма установка флагов AllPaintinglnWmPaint и UserPaint
EnableNotifyMessage 
Если установлен и оконная процедура ЭУ получает со-
общение, товызывае тся метод OnNotifyMessage ЭУ
FixedHeight 
Если установлен, то высота ЭУ не меняется при его автома-
тическом масштабиоовании
FixedWidth 
Если установлен, то ширина ЭУ не меняется ври его авто-
матическом масштабировании
Opaque
Если установлен, то отрисовка ЭУ не сопровождается от-
рисовкой его фона
ResizeRedraw
Если установлен, то ЭУ отрисовывается заново при измене-
нии его размеров
Selectable 
Если установлен, то элемент может получать фокус ввода
StandardClick
Если установлен, то щелчок на ЭУ порождает событие 
Click
StandardDoubleClick     Если установлен, двойной щелчок на элементе управления  
порождает событие Doubleclick
SupportsTransparent 
BackColor
Если установлен, то элемент может менять свою прозрачность 
UserMouse 
Если установлен, то элемент сам обрабатывает события от 
мыши
UserPaint 
Если установлен, то компонент отрисовывает себя сам
Продолжение табл. 1.1
Доступ онлайн
2 000 ₽
В корзину