Основы визуальной разработки Windows-приложений на языке C# (Windows Forms)

Курс построен как серия проектов, каждый из которых  посвящен определенной теме, однако в процессе разработки проектов приводятся дополнительные сведения, что позволяет охватить очень широкий диапазон вопросов, связанных с созданием Windows-приложений. При этом особое внимание уделяется оптимальным приемам раз­работки приложений, управляемых событиями, и эффективному применению компонентов библиотеки Microsoft Windows Forms. Подробно обсуждаются средства, обеспечивающие удобный и надежный диалог программы с пользо­вателем. Кроме того, рассматриваются типичные ошибки, возникающие при использовании различных классов библиотеки Windows Forms, и указываются способы их исправления.

Курс ориентирован на пользователя, владеющего основами программирования. Обязательно также знакомство с языком С# (на уровне знания системы базовых типов и управляющих операторов).

Программа курса

  1. Элементы управления. Свойства. События. Элементы управления Button, Label и LinkLabel, TextBox. Проект «Прыгающие кнопки».
  2. Проект «Калькулятор». Обработчик событий для нескольких компонентов. Вычисления с контролем правильности введённых данных. Простейшие приёмы ускорения работы с помощью клавиатуры. Использование обработчика событий от клавиатуры.Контроль за изменением исходных данных.
  3. Элементы управления RadioButton и Checkbox. Элемент управления GroupBox. Проект «Анкета». Информирование пользователя о возникшей ошибке.
  4. Элементы управления ListBox и CheckedListBox. Проект «Списки».
  5. Проект «Часы». Элемент управления Timer.
  6. Формы: проект FORMS. Проект FORMS знакомит с особенностями приложений, использующих несколько форм, и демонстрирует различные способы настройки внешнего вида форм и режимы их отображения на экране. Рассматриваются вопросы взаимодействия форм в рамках одного приложения и, в частности, проблемы, связанные с закрытием немодальных подчиненных форм. Описываются настройки для диалоговых окон и методы, обеспечивающие вывод на экран стандартных диалогов.
  7. Обработка событий от мыши: проект MOUSE. Проект MOUSE знакомит с обработкой событий, связанных с манипулятором «мышь». Рассматривается явление захвата мыши компонентом и проблемы, порождаемые подобным захватом. Кроме того, обсуждаются вопросы, связанные с отношением «родитель» — «дочерний компонент» и с порядком расположения дочерних компонентов в форме или другом компоненте-контейнере (z-порядок).
  8. Меню и работа с текстовыми файлами: проект TXTEDIT1. В этом проекте описывается создание и настройка главного меню приложения (компонент MenuStrip) и реализуются основные действия с текстовыми файлами (создание, сохранение, загрузка, а также вывод запроса о сохранении изменений, внесенных в текст). Рассматриваются особенности диалоговых компонентов SaveFileDialog и OpenFileDialog и многострочного варианта компонента TextBox.
  9. Дополнительные возможности меню, настройка цвета и шрифта: проект TXTEDIT2. В этом проекте описывается создание специальных команд меню (команды-флажки и команды-переключатели) и групп меню третьего уровня. Приводится реализация команд для настройки различных характеристик шрифта и выравнивания текста в окне редактора; рассматриваются связанные с этими командами свойства классов Font и TextBox. В этом проекте также реализуются стандартные команды редактирования текста, которые включаются как в главное меню (компонент MenuStrip), так и в контекстное меню редактора (компонент ContextMenuStrip). Также рассматриваются вопросы, связанные с использованием буфера обмена Windows в .NET-приложениях (класс Clipboard).
  10. Панель инструментов, статусная панель и подсказки: проект TXTEDIT3. Проект TXTEDIT3 продолжает серию проектов, посвященных разработке полнофункционального текстового редактора. В этом проекте создается и настраивается панель инструментов приложения (компонент ToolStrip) и ее элементы: обычные кнопки быстрого доступа, кнопки-флажки и кнопки-переключатели. Описываются действия, необходимые для добавления изображений в файл ресурсов приложения и связывания добавленных изображений с кнопками и командами меню.В этом проекте также создается и настраивается статусная панель приложения (компонент StatusStrip) и ее элементы-метки. Описываются действия, обеспечивающие проверку состояния клавиш-переключателей <Caps Lock> и <Num Lock>, скрытие и повторное отображение панели инструментов и статусной панели, а также вывод развернутой подсказки к выделенной команде меню на статусную панель. Кроме того, описывается компонент ToolTip, позволяющий связывать контекстную подсказку с любым визуальным компонентом приложения.
  11. Создание компонентов во время выполнения программы: проект HTOWERS. Проект HTOWERS, представляет собой компью­терную реализацию известной логической задачи «Ханойские башни». Эта за­дача состоит в следующем: имеются три колышка, на один из которых нанизано (в порядке уменьшения размера) несколько дисков, образующих «башню»; требуется переместить всю башню на один из пустых колышков, пользуясь другим пустым колышком как вспомогательным. Переносить можно по одному диску, причем больший диск нельзя помещать на меньший. Заметим, что для решения задачи с N дисками минимальное число переносов равно  2N — 1. В приложении HTOWERS вместо колышков используются компоненты-контейнеры GroupBox, а вместо дисков перемещаются прямоугольные блоки (компоненты Label), создаваемые непосредственно в ходе выполнения программы. Перемещение блоков реализуется с помощью механизма drag & drop. Предусматриваются средства проверки правильности решения, а также демо-режим, показывающий, в каком порядке надо перемещать блоки, чтобы решить задачу. В заключительном разделе описываются действия, позволяющие задать идентификационные данные для разработанного приложения (название приложения, его краткое описание, сведения об авторе, номер версии).
  12. Цвета: проект COLORS. Проект COLORS знакомит с типами, предназначенными для работы с цветом (Color, KnownColor, colorTranslator), и с компонентами, обеспечивающими прокрутку данных (TrackBar, HScrollBar, VScrollBar). Кроме того, описывается способ доступа к компонентам через клавиши-ускорители связанных с ними меток, и рассматриваются варианты привязки компонентов к границам формы (anchoring).
  13. Обработка наборов данных: проект STUD1. Проект STUD1 посвящен стандартным средствам .NET, связанным с обработ­кой наборов данных, включая их привязку к компонентам формы (data binding). В нем создается класс student с описанием структуры данных, рассма­тривается компонент BindingSource и описываются действия, необходимые для связывания с помощью данного компонента созданной структуры с табли­цей типа DataGridview. Также описываются способы контроля правильности вводимых данных на уровне отдельной ячейки таблицы и строки в целом, де­монстрируется использование столбцов таблицы различных типов (столбцы с ячейками-флажками и ячейками — выпадающими списками) и рассматрива­ются простейшие средства XML-сериализации наборов данных. Описывается компонент BindingNavigator, предоставляющий дополнительные средства навигации и редактирования набора данных, и приводится пример автоматиза­ции действий при добавлении нового элемента в набор данных. Дополнитель­но описывается механизм автогенерации кода, реализованный в среде Visual С#, и связанные с ним шаблоны (code snippets).
  14. Дополнительные возможности, связанные с обработкой наборов данных: проект STUD2. Проект STUD2 посвящен дополнительным средствам, связанным с обработкой наборов данных и их привязкой к компонентам формы. В нем демонстрируется создание подчиненных наборов данных, связываемых с элементами основного набора и отображаемых в дополнительных (подчиненных) таблицах; описы­ваются средства, позволяющие связывать элементы набора данных с произ­вольными визуальными компонентами (не обязательно таблицами); рассма­триваются Дополнительные возможности, связанные с таблицей DataGridView (использование выпадающих списков для отображения полей с нетекстовой информацией, использование столбцов с вычисляемыми полями). Кроме  того, рассматривается компонент TabControl и демонстрируются способы сорти­ровки и поиска данных, основанные на применении функций сравнения (com­parison) и тестовых функций (predicate).
  15. Приложение с заставкой: проект TRIGFUNC. Проект TRIGFUNC демонстрирует дополнительные возможности компонента-таблицы DataGridview, связанные с настройкой свойств ее столбцов. В нем так­же описываются приемы, связанные с обработкой параметров командной стро­ки, отображением на экране окна-заставки с особыми свойствами и досрочным завершением программы. Рассматривается метод Sleep класса Thread, метод DoEvents класса Application и компонент ProgressBar (индикатор хода про­цесса).
  16. MDI-приложение: проект JPEGVIEW. Проект JPEGVIEW посвящен приложениям с многодокументным интерфей­сом (MDI-приложениям). Рассматриваются вопросы, связанные со взаимодей­ствием главной формы и дочерних форм (child-форм), описываются способы реализации стандартных действий над дочерними формами (варианты разме­щения на экране, вывод списка child-форм в меню, одновременное закрытие всех child-форм и т. д.). Кроме того, реализуется режим масштабирования изо­бражения в child-форме и возможность прокрутки содержимого формы с по­мощью клавиатуры.