Современные технологии программирования: разработка Windows-приложений на языке С# В 2 т. Т.1
Покупка
Издательство:
Прометей
Автор текста:
Горелов Сергей Витальевич
Год издания: 2019
Кол-во страниц: 362
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-907100-09-1
Артикул: 818592.01.99
В учебнике даются основные сведения о теории и практике разработки Windows-приложений с графическим интерфейсом на языке C#. Книга состоит из двух томов. В первом томе излагаются основы Windows Forms и рассматриваются наиболее популярные элементы управления и компоненты, изучаются способы привязки элементов управления к источникам данных, достаточно подробно анализируются формы и их взаимодействие.
При разработке приложений предпочтение отдается визуальной среде Visual Studio.
Соответствует требованиям Федерального государственного образовательного стандарта высшего образования последнего поколения.
Для студентов, имеющих практические навыки разработки консольных приложений на языке С# и продолжающих его изучение для создания приложений с графическим интерфейсом. Материал учебника может быть полезен студентам при выполнении курсовых работ и творческих домашних заданий. Может быть интересен аспирантам, научным сотрудникам и преподавателям.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Федеральное государственное образовательное бюджетное учреждение высшего образования «ФИНАНСОВЫЙ УНИВЕРСИТЕТ ПРИ ПРАВИТЕЛЬСТВЕ РОССИЙСКОЙ ФЕДЕРАЦИИ» ДЕПАРТАМЕНТ АНАЛИЗА ДАННЫХ, ПРИНЯТИЯ РЕШЕНИЙ И ФИНАНСОВЫХ ТЕХНОЛОГИЙ С. В. ГОРЕЛОВ СОВРЕМЕННЫЕ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ: РАЗРАБОТКА WINDOWS-ПРИЛОЖЕНИЙ НА ЯЗЫКЕ С# Учебник для студентов, обучающихся по дисциплине «Современные технологии программирования», направление «Прикладная информатика» (09.03.03 — для бакалавров, 09.03.04 — для магистров) В двух томах Том I Под научной редакцией доктора экономических наук Лукьянова Павла Борисовича Москва 2019
УДК 004(075.8) ББК 32.973.26-018.1 Г68 Автор: Сергей Витальевич Горелов — кандидат технических наук, доцент Департамента анализа данных, принятия решений и финансовых технологий Финансового университета при Правительстве Российской Федерации. Рецензенты: Завгородний В.И. — доктор экономических наук, профессор Финансового университета при Правительстве Российской Федерации; Волков А.Г. — кандидат технических наук, доцент, начальник кафедры Военной академии РВСН им. Петра Великого. Г68 Горелов С.В. Современные технологии программирования: разра ботка Windows-приложений на языке С#: Учебник. В 2 т. Т. 1 / С.В. Горелов; под науч. ред. П.Б. Лукьянова. — М.: Прометей. 2019. — 362 c. В учебнике даются основные сведения о теории и практике разработки Windows-приложений с графическим интерфейсом на языке C#. Книга состоит из двух томов. В первом томе излагаются основы Windows Forms и рассматриваются наиболее популярные элементы управления и компоненты, изучаются способы привязки элементов управления к источникам данных, достаточно подробно анализируются формы и их взаимодействие. При разработке приложений предпочтение отдается визуальной среде Visual Studio. Соответствует требованиям Федерального государственного образовательного стандарта высшего образования последнего поколения. Для студентов, имеющих практические навыки разработки консольных приложений на языке С# и продолжающих его изучение для создания приложений с графическим интерфейсом. Материал учебника может быть полезен студентам при выполнении курсовых работ и творческих домашних заданий. Может быть интересен аспирантам, научным сотрудникам и преподавателям. ISBN 978-5-907100-09-1 © Горелов С.В., 2019 © Издательство «Прометей», 2019
СОДЕРЖАНИЕ Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1. Взаимодействие пользователя с программой . . . . . . . . . . . . . . . . .10 1.1. Типы программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 1.2. Цикл обработки сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 1.3. Компоненты окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 2. Windows-приложения и среда Visual Studio . . . . . . . . . . . . . . . . . . .16 2.1. Среда Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 2.2. Подробнее о делегатах и событиях . . . . . . . . . . . . . . . . . . . . . . . . .32 Делегаты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 События . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 2.3. Структура Windows-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . .36 3. Общие сведения об элементах управления . . . . . . . . . . . . . . . . . . .45 4. Часто используемые члены класса Control . . . . . . . . . . . . . . . . . . .56 4.1. Свойства класса Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 4.2. Методы класса Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 4.3. События класса Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 5. Внедрение изображения в сборку. . . . . . . . . . . . . . . . . . . . . . . . . . . .65 6. Диалоговое окно MessageBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 7. Программное управление интерфейсом . . . . . . . . . . . . . . . . . . . . . .71 8. Элемент управления Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 9. Элемент управления Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 10. Элемент управления TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83 11. Элемент управления MaskedTextBox . . . . . . . . . . . . . . . . . . . . . . .98 12. Группирование элементов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 12.1. Элемент управления GroupBox . . . . . . . . . . . . . . . . . . . . . . . . . .108 12.2. Элемент управления Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109 13. Флажки и переключатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 13.1. Элемент управления CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . 110 13.2. Элемент управления RadioButton . . . . . . . . . . . . . . . . . . . . . . . . 113 14. Регуляторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 14.1. Элемент управления DomainUpDown . . . . . . . . . . . . . . . . . . . . . 116 14.2. Элемент управления NumericUpDown . . . . . . . . . . . . . . . . . . . . 119 15. Комплексный пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 16. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .126
17. Списочные элементы управления . . . . . . . . . . . . . . . . . . . . . . . . .139 17.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 17.2. Элемент управления ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 17.3. Элемент управления ComboBox . . . . . . . . . . . . . . . . . . . . . . . . .159 17.4. Элемент управления CheckedListBox . . . . . . . . . . . . . . . . . . . . .165 17.5. Изменение объектов коллекции . . . . . . . . . . . . . . . . . . . . . . . . . .170 17.6. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .172 18. Привязка к источнику данных . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 18.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 18.2. Сложная привязка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Основные сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Перерисовка элемента управления . . . . . . . . . . . . . . . . . . . . . . . . . .188 Режим визуальной привязки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 BindingSource как самостоятельный источник данных . . . . . . . . .193 BindingNavigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 Фильтрация строк источника данных . . . . . . . . . . . . . . . . . . . . . . .197 Использование yield для формирования источника данных . . . . . .198 Встроенные и ссылочные типы источника данных . . . . . . . . . . . .200 18.3. Простая привязка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Основные сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 Примеры простой привязки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Простая привязка к сложному объекту . . . . . . . . . . . . . . . . . . . . . .209 События класса Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212 Привязка в режиме визуальной разработки . . . . . . . . . . . . . . . . . .214 18.4. Комплексный пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216 18.5. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .221 19. Главное и контекстное меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 19.1. Главное меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 19.2. Контекстное меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 19.3. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .233 20. Панель инструментов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 20.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234 20.2. Практика использования компонента ToolStrip . . . . . . . . . . . . .238 20.3. Пример использования ToolStrip . . . . . . . . . . . . . . . . . . . . . . . . .241 20.4. Дополнительные возможности ToolStrip . . . . . . . . . . . . . . . . . .244 20.5. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .247 21. Строка состояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249 22. Таймер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 22.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 22.2. Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258 22.3. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .261
23. Общие сведения о формах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263 23.1. Что такое SDI- и MDI-интерфейсы . . . . . . . . . . . . . . . . . . . . . . .263 23.2. Базовый класс Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 23.3. Закрытие модального окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270 23.4. Настройка формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Настройка строки заголовка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Изменение стиля формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 Изменение состояния окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Создание окна нестандартного вида . . . . . . . . . . . . . . . . . . . . . . . .278 Всплывающее окно . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 Значок для формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287 Использование клавиш Enter и Esc . . . . . . . . . . . . . . . . . . . . . . . . . .288 Когда первое отображаемое окно — вспомогательное . . . . . . . . .289 Передний и задний планы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291 Расположение формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293 Размеры формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 Автоматическое масштабирование формы . . . . . . . . . . . . . . . . . .297 24. Взаимодействие форм приложения . . . . . . . . . . . . . . . . . . . . . . . .302 24.1. Взаимодействие родительской и дочерней форм . . . . . . . . . . . .302 Использование объектных членов . . . . . . . . . . . . . . . . . . . . . . . . . . .303 Использование статических членов . . . . . . . . . . . . . . . . . . . . . . . . .306 Использование возвращаемого значения . . . . . . . . . . . . . . . . . . . . . .310 24.2. Управление формами в Main . . . . . . . . . . . . . . . . . . . . . . . . . . . .315 24.3. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .318 25. Немодальные окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320 26. Приложения с интерфейсом MDI. . . . . . . . . . . . . . . . . . . . . . . . . .326 26.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326 26.2. Использование меню в MDI-формах . . . . . . . . . . . . . . . . . . . . .328 26.3. Пример разработки MDI-приложения . . . . . . . . . . . . . . . . . . . .328 Создание родительской MDI-формы . . . . . . . . . . . . . . . . . . . . . . . .328 Создание дочерней MDI-формы. . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 Настройка родительской MDI-формы . . . . . . . . . . . . . . . . . . . . . . .331 Особенности MDI-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332 26.4. Определение активной дочерней MDI-формы . . . . . . . . . . . . . .334 26.5. Отправка данных в активную дочернюю MDI-форму . . . . . . .335 26.6. Упорядочение дочерних MDI-форм . . . . . . . . . . . . . . . . . . . . . .337 26.7. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .338 27. Создание фоновых программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339 27.1. Общие сведения о компоненте NotifyIcon . . . . . . . . . . . . . . . . .339 27.2. Пример использования компонента NotifyIcon . . . . . . . . . . . . .341 27.3. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .345
28. Стандартные диалоговые окна . . . . . . . . . . . . . . . . . . . . . . . . . . .346 28.1. Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .346 28.2. Диалоговое окно открытия файла (OpenFileDialog) . . . . . . . . .347 28.3. Диалоговое окно сохранения файла (SaveFileDialog) . . . . . . .350 28.4. Диалоговое окно выбора папки (FolderBrowserDialog) . . . . . .352 28.5. Диалоговое окно выбора шрифта (FontDialog) . . . . . . . . . . . . .355 28.6. Диалоговое окно выбора цвета (ColorDialog) . . . . . . . . . . . . . .357 28.7. Задания для самостоятельной работы . . . . . . . . . . . . . . . . . . . . .358 Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360
ПРЕДИСЛОВИЕ Разработка приложений с графическим интерфейсом, кроме написания кода, включает в себя также проектирование и разработку интерфейса пользователя. Под интерфейсом пользователя понимаются окна приложения, их элементы управления и организация взаимодействия с пользователем. Качество интерфейса, его эргономика, художественное оформление и т.д. определяют качество и привлекательность приложения. Вспомним, сколько раз менялся интерфейс таких Интернет-ресурсов, как портал государственных услуг (https://www.mos.ru/) или портал Финансового университета (www.fa.ru). Разработчики этих порталов предпринимают много усилий для того, чтобы сделать свой продукт удобным. Наиболее эффективные и развитые подходы к разработке Windows-приложений предлагает платформа Framework .NET и ее среда разработки Visual Studio. В этой платформе реализованы две технологии разработки интерфейса пользователя: Windows Forms и Windows Presentation Foundation (WPF). WPF является новой технологией, основанной на XML. Старая традиционная технология практически не требует знания языка XML, поэтому она проще новой. В данном учебнике излагаются основы разработки Windowsприложений по технологии Windows Forms. Эта технология представлена типами пространства имен System.Windows.Forms, к которым относятся элементы управления, компоненты, диалоговые окна и другие типы. Среда Visual Studio позволяет проектировать окна приложения в режиме визуальной разработки, при этом во многих случаях программисту не требуется разрабатывать код для корректировки ин
терфейса. Программист направляет свои усилия лишь на разработку обработчиков событий. При этом разработчик все равно должен знать назначение, свойства и поведение элементов интерфейса и использовать наиболее подходящие элементы для решения задачи. Количество элементов управления и компонентов превышает 60. Подробно изучить их в одном учебнике не представляется возможным. В учебнике излагаются лишь наиболее часто используемые свойства и методы этих элементов, что в большинстве случаев не препятствует созданию приложения с развитым эргономичным интерфейсом. Все типовые применения элементов управления и компонентов проиллюстрированы примерами на языке C#. Первый том учебника посвящен изучению принципов реализации событийного управления Windows. Изучаются возможности среды Visual Studio, и приводится пример разработки простейшего Windows-приложения. На основе этого примера рассматривается типовая структура приложения. Изучение общей функциональности элементов управления начинается с изучения базового классом Control. В первом томе учебника приводится материал, описывающий наиболее популярные элементы управления, на базе которых можно разработать большинство приложений. Из числа различных технологий разработки интерфейса программы в первом томе рассмотрены вопросы привязки элементов управления к источникам данных. Во втором томе учебника рассмотрены формы, их свойства и взаимодействие друг с другом. Продолжено изучение элементов управления, к числу которых относятся достаточно сложные элементы. Описаны различные сопутствующие технологии, например сохранение состояния программы, разработка приложений для глобального рынка. Достаточно большое место заняло описание сложного элемента управления DataGridView, предназначенного для табличного отображения данных. Основным источником информации при написании данного учебника послужила справочная система https://msdn.microsoft. com/ru-ru/library и опыт автора. Учебник «Современные технологии программирования: разработка Windows-приложений на языке С#» разработан в соот
ветствии с учебным планом направления 09.03.03 «Прикладная информатика» и требованиями Федерального государственного образовательного стандарта высшего образования последнего поколения. Учебник ориентирован на формирование профессиональных компетенций, связанных с использованием теоретических знаний и практических навыков при анализе и разработке программных систем с использованием объектно-ориентированного языка программирования и современных технологий. В результате освоения дисциплины студенты должны: знать y назначение и свойства элементов управления и компонентов пользовательского интерфейса; y основные способы использования элементов управления и компонентов пользовательского интерфейса; y назначение и возможности интегрированной визуальной среды программирования; y возможности современных технологий, внедряемых в профессиональные приложения с использованием интегрированной среды программирования; уметь y создавать эргономичный пользовательский интерфейс приложения; y использовать элементы управления и компоненты пользовательского интерфейса при разработке приложений; y использовать возможности интегрированной визуальной среды программирования; y использовать современные технологии при разработке профессиональных приложений; y использовать средства языка программирования и визуальной среды для отладки программы; владеть y навыками проектирования пользовательского интерфейса с использованием элементов управления и компонентов; y навыками работы в интегрированной визуальной среде программирования при создании приложения; y навыками реализации современных технологий в разрабатываемых профессиональных приложениях.
1. ВЗАИМОДЕЙСТВИЕ ПОЛЬЗОВАТЕЛЯ С ПРОГРАММОЙ 1.1. Типы программ Существуют два типа прикладных программ (ПП), различающихся способом взаимодействия с Windows и свойствами создаваемого окна. Это консольные приложения и приложения с графическим интерфейсом. Для консольных приложений операционная система Windows создает окно, являющееся моделью окна MS DOS с текстовым режимом. Консоль состоит из окна и клавиатуры. Манипулятор мышь не поддерживается. С появлением Windows основными приложениями стали приложения с графическим интерфейсом. Такие приложения будем называть Windows-приложениями. Консольная программа инициирует взаимодействие с пользователем с помощью запросов на выполнение того или иного метода. На рис. 1.1 показана схема взаимодействия на примере ввода с клавиатуры с помощью метода System.Console.ReadLine. Консольная программа путем выполнения методов консольного ввода (запросов) определяет моменты времени и последовательность взаимодействия программы с пользователем. Однако Windows-приложения работают не так. Пользователь сам выбирает, какой элемент управления, размещенный на окне, он хочет использовать. Взаимодействие программы с пользователем берет на себя Windows. Прикладная программа теперь не запрашивает с помощью функций ввод данных, вместо этого она ждет, когда Windows известит программу о том, что пользователь выполнил какое-то действие. И к этим действиям относится не только ввод данных, но и огромное количество других действий, например выборка пункта меню. Этот процесс проиллюстрирован на рис. 1.2.