На этом шаге мы рассмотрим общие принципы создания приложений с графическим интерфейсом.
Тема, связанная с созданием приложений с графическим интерфейсом, более чем многогранна и исключительно объемна. Мы, в силу объективных причин, все вопросы осветить не сможем, но постараемся остановиться на наиболее важных и принципиальных. Начнем с базовых принципов, которые лежат в основе технологии создания приложений с графическим интерфейсом.
В общих чертах наша задача состоит в том, чтобы написать программный код, при выполнении которого отображается окно с элементами управления. Это могут быть кнопки, списки, опции, переключатели - список элементов довольно обширный, но все же ограниченный. Среди элементов есть статические - такие, например, как текстовая метка, основное назначение которой состоит в том, чтобы отображать текст. Но большинство элементов функциональные. С ними можно выполнять некоторые манипуляции (например, щелкать по кнопке или выбирать пункт в раскрывающемся списке). Обычно у этих манипуляций есть последствия - ведь элементы управления добавляются именно для того, чтобы программа реагировала на действия, связанные с этими элементами. Как же создать такую программу? Задачу можно разбить на две составляющие, или две подзадачи. Первая связана с созданием собственно графического интерфейса. Вторая подразумевает определение реакции программы на действия с элементами управления графического интерфейса. Каждую подзадачу мы рассмотрим отдельно.
Принцип создания графического интерфейса простой. Каждый элемент управления реализуется с помощью объекта. Для каждого типа элементов есть свой класс. Например, если нам нужна кнопка, то необходимо создавать объект класса Button. Если нам нужна метка для отображения текста, то создается объект класса Label. Само окно, в которое добавляются элементы управления, реализуется как объект класса Form. Соответствующие объекты создаются, определяются их характеристики, размеры и положение, элементы добавляются в контейнер (которым может быть, например, окно). В таблице 1 перечислены некоторые (далеко не все) классы из пространства имен System.Windows.Forms, которые позволяют создавать объекты для основных графических элементов управления.
Класс | Описание |
---|---|
Button | Класс для создания элемента кнопки |
CheckBox | Класс для создания элемента опционного типа (опция или кнопка с режимом вдавливания) |
ComboBox | Класс для создания элемента "список выбора" |
Form | Класс для создания объекта окна формы |
GroupBox | Класс для создания элемента, используемого при группировке таких элементов управления, как переключатели |
Label | Класс для создания объекта текстовой метки (элемент, который может содержать текст) |
ListBox | Класс для создания объекта элемента, представляющего собой раскрывающийся список |
Panel | Класс для создания объекта панели. Панель является контейнером для размещения других элементов управления |
RadioButton | Класс для создания объекта элемента, являющегося переключателем |
TextBox | Класс для создания объекта элемента, представляющего собой поле для ввода значений |
Еще раз подчеркнем, что в действительности классов и элементов (в том числе и всевозможных меню) намного больше. Выше перечислены лишь те, что представляют наибольший интерес и будут задействованы в самой ближайшей перспективе.
Как именно создаются объекты для компонентов, настраиваются их свойства и выполняются прочие сопутствующие операции, мы рассмотрим чуть позже на конкретных примерах. Пикантность ситуации в том, что этого мало. Нужно еще "научить" программу реагировать на действия пользователя с элементами графического интерфейса. Здесь нужно учесть, что есть принципиальное отличие в способе выполнения консольных программ и программ с графическим интерфейсом. Если консольная программа сама обращается к операционной системе, то при выполнении программы с графическим интерфейсом операционная система отправляет сообщения программе. Понять это несложно. Представим, что имеется окно с двумя кнопками. Пользователь может нажать на любую из них. Между кнопками и пользователем есть "посредник" - операционная система. При щелчке по кнопке операционная система, образно выражаясь, сообщает программе, на какой кнопке произошло соответствующее событие. Программа, в свою очередь, должна "уметь" реагировать на него. Это в теории. На практике ситуация следующая. С каждый элементом управления связано определенное количество событий. Здесь событие понимается в программистском смысле. Например, у объектов класса Button (кнопка) есть событие Click. Данное событие генерируется, если по кнопке выполнен щелчок. Мы можем добавить в список обработчиков события ссылки на методы, которые будут вызываться при возникновении события. Собственно, это то, что нам нужно.
События обрабатываются экземплярами делегата EventHandler. Этот делегат определен в пространстве имен System. Делегат соответствует методам, не возвращающим результат, у которых два аргумента. Первый аргумент является объектной ссылкой класса Object. Через этот аргумент передается ссылка на объект элемента, на котором произошло событие (объект, сгенерировавший событие). Второй аргумент является объектной ссылкой класса EventArgs (пространство имен System). Через этот аргумент передается ссылка на объект, содержащий информацию о произошедшем событии.
Понятно, что создание приложения с графическим интерфейсом имеет и иные особенности. Но они во многом второстепенны, и соответствующие вопросы мы будем рассматривать по мере обсуждения примеров.
На следующем шаге мы рассмотрим создание пустого окна.