Разработка на языке C# приложений с графическим интерфейсом : использование Windows Forms
Покупка
Тематика:
Программирование на C и C++
Издательство:
Издательский Дом НИТУ «МИСиС»
Автор:
Мурадханов Сергей Эдуардович
Год издания: 2019
Кол-во страниц: 396
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-907061-36-1
Артикул: 753139.01.99
Доступ онлайн
В корзину
Алгоритмические языки высокого уровня - это основа и фундамент для разработки сложных информационных комплексов и систем. Эта область знаний имеет как теоретическое направление (процедурный и объектно-ориентированный подход к анализу предметной области), так и практико-ориентированное (синтез информационной системы с помощью инструментов процедурной или объектно-ориентированной разработки). Для усвоения материала учебника необходимы базовые знания и навыки в алгоритмизации и реализации программ на C# на основе объектно-ориентированного подхода. Представленный материал дает как теоретические знания, так и практические навыки по разработке приложений в среде Visual Studio (2005-2017) на языке программирования С#. Предназначен для студентов, обучающихся в бакалавриате по направлениям подготовки 01.03.04 «Прикладная математика», 09.03.02 «Информационные системы и технологии», 09.03.03 «Прикладная информатика».
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 681: Точная механика. Автоматика. Приборостроение
ОКСО:
- ВО - Бакалавриат
- 01.03.04: Прикладная математика
- 09.03.01: Информатика и вычислительная техника
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Москва 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
Доступ онлайн
В корзину