|
Комп'ютерний практикум №1. Введение в Windows FormsСтр 1 из 19Следующая ⇒ ЗП-03/3 “ВІЗУАЛЬНЕ ПРОГРАМУВАННЯ” для напряму підготовки 6.050201 “Системна інженерія» спеціальність 7.05020102 «Комп’ютеризовані та робото технічні системи»
Київ 2012
Комп'ютерний практикум №1. Введение в Windows Forms Цель:овладеть возможностями использования инструментальных средств программной среды Microsoft Visual C# 2005 Express Edition для проектирования Windows приложений. Научиться создавать и работать с делегатами. Окно кода программы Как уже отмечалось, в окне дизайнера форм отображается только графическое представление визуальных компонент формы. Все данные вашей программы хранятся кодом программы на языке С#. Для того чтобы посмотреть код созданной нами формы, выберите в контекстном меню элемента Form1 окна Solution Explorer пункт View Code. Откроется файл Form1.cs. Это и есть представление синтаксисом языка С# класса формы. То же самое вы могли написать в текстовом файле, используя, например, редактор Notepad. Роль класса Application Класс Application определяет множество статических членов, позволяющих управлять поведением различных низкоуровневых элементов приложения Windows Form. Класс Application определяет набор событий, позволяющих реагировать, например, на завершение работы приложения или переход в состояние ожидания. Функция Main задает точку входа программы, то место, откуда начнет- ся выполнение описанных вами методов. Метод Run() отвечает за создание, «запуск» в потоке приложения и возможное появление на экране дисплея первой формы. Стандартный вид этого метода: Application.Run(new Form1());
Рассмотрим другие методы функции Main: · DoEvents(). Обеспечивает для приложения возможность в ходе выполнения операций, требующих много времени, обрабатывать сообщения, находящиеся в это время в очереди сообщений. · Exit(). Завершает выполнение Windows-приложения и выгружает из памяти домен этого приложения. · EnableVisualStyles(). Настраивает приложение на поддержку визуальных стилей Windows XP. При активизации поддержки XP стилей указанный метод должен вызываться до загрузки главного окна с помощью Application.Run().
Например, можно реализовать конструктор следующего вида, который будет играть роль конструктора, заданного по умолчанию (результат запуска такого приложения см. рис. 5). Рис. 5 Чтение атрибутов с помощью типа Application Свойства проекта Каждый проект (Application) имеет определенный набор свойств. Среда Visual Studio.NET позволяет изменять эти настройки визуально: 1. Выделить в дереве Solution Explorer корневой элемент MyFirstWindowsFormsApplication. 2. Нажать пункт меню View/Property Pages. 3. Появится окно, изображенное на рис. 6. Примечание: если окно Properties отсутствует, в Visual Studio.NET его можно открыть используя меню View/Properties Window или горячей клавиши Alt+Enter. Рис. 6. Свойства проекта
Закладка Application содержит основную информацию о проекте. · Assembly Name — имя сборки. · Default Namespace — используемое по умолчанию в проекте пространство имен. · Target Framework – описывает версию.NET Framework с которой работает приложение. · Output Туре — тип приложения. Здесь можно выбрать Windows Application, Console Application или Class Library. По умолчанию для Windows Forms устанавливается тип Windows Application. · Startup Object — имя класса, содержащего метод Main, который будет вызываться при запуске приложения
· Assembly Information — содержит информацию о сборке или проекте, включая описание, информцию о версии, название компании, продукта и т.д. · Resources – содержит основные опции для конфигурации приложения: o Icon and manifest – выбрано по умолчанию. Позволяет выбрать собственную иконку или выбрать разные опции создания манифеста. § Application Icon — путь к файлу с пиктограммой для приложения. § Manifest – выбирает настройки создания манифеста когда приложение запущено в Windows Vista под User Account Control (UAC) o Resource Filе – выбор этого пункта отменяет возможность выбора иконки и манифеста. Позволяет ввести путь (или выбрать его с помощью кнопки обзора) для добавления к проекту исходного файла Win32. Кроме того, вам необходимо знать о свойствах на закладке Build(рис. 7). Рис. 7 Окно свойств проекта Build Эта вкладка позволяет описать конфигурационные свойства компиляции проекта. · General – позволяет настроить основные опции компиляции проекта. o Conditional compilation symbols – описывает символы которыми обуславливается условная компиляция o Define DEBUG constant – задает отладочный символ. Аналогично команде /define:DEBUG в командной строке. o Define TRACE constant – задает символ трассировки. Аналогично команде /define:TRACE в командной строке. o Allow unsafe code - разрешить использование в проекте ключевого слова unsafe o Optimize code. Включение этого свойства помогает, в некоторых случаях, увеличить производительность вашей программы в десятки раз. · Errors and Warnings – используется для настройки опций ошибок и предупреждений для компиляции проекта o Warning Level — определить уровень предупреждений, отображаемых при компиляции программы. o Suppress warnings – блок возможностей компилятора создавать одно или несколько предупреждений · Treat Warnings as Errors – настройки для описания какие предупреждения трактуются как ошибки o None – предупреждения не воспринимаются ошибками o Specific warnings – только описанные предупреждения воспринимаются ошибками. o All – все предупреждения воспринимаются ошибками · Output – применяется для описания выходных опций компилируемого проекта o Output Path — путь, где будет сформирован выходной файл. o XML documentation file – задает имя файла информации, куда будут заноситься комментарии из документа. o Register for COM interop – показывает, что приложение будет использовать СОМ объекты, позволяет связывать СОМ объекты с приложением, которое разрабатывается. o Generate serialization assembly – описывает средства создания сборки. Мы не будем изменять свойства программы. Оставим все значения по умолчанию. Запуск приложения Запуск приложения из среды Visual Studio.NET возможен в двух режимах: - с отладкой, - без отладки. Для запуска приложения в режиме отладки необходимо выбрать пункт меню Debug/Start. Этот режим используется для отладки создаваемого приложения в ходе выполнения программы. Если же необходимо запустить приложение только для того, чтобы посмотреть результаты выполненной работы, используется пункт меню Debug/ Start Without Debugging. Запустите приложение в режиме без отладки {Debug/Start Without Debugging). На экране появится окно приложения (см. рис. 8).
Рис. 8 Приложение, запущенное в режиме без отладки. Что такое форма Форма представляет собой экранный объект, обычно прямоугольной формы, который можно применять для предоставления информации пользователю и для обработки ввода информации от пользователя. Форма — это объект, который задается свойствами, определяющими их внешний вид, методами, определяющими их поведение, и событиями, определяющими их взаимодействие с пользователем. Резюме. § Load. Генерируется ОДИН РАЗ, непосредственно после первого вызова метода Form.Show() или Form.ShowDialog(). § Activated. Многократно генерируется в течение жизни формы. Когда Windows активизирует форму. Связано с получением и потерей фокуса. Все необходимые мероприятия выполняются здесь. Методы Form.Show(), Form.ShowDialog(), Form.Activate() (передача фокуса, реализованная программно!) способствуют этому. § VisibleChanged. Генерируется всякий раз при изменении свойства Visible формы. Когда она становится видимой или невидимой. Событию способствуют методы Form.Show(), Form.ShowDialog(), Form.Hide(), Form.Close(). § Deactivate. Возникает при потере фокуса формой в результате взаимодействия с пользовательским интерфейсом либо в результате вызова методов Form.Hide() или Form.Cloze() – но только для активной формы. Если закрывать неактивную форму, событие не произойдёт! Сказано, что Activated и Deactivate возбуждаются только при перемещении фокуса в пределах приложения. При переключении с одного приложения на другое эти события не генерируются. § Closing. Непосредственно перед закрытием формы. В этот момент процесс закрытия формы может быть приостановлен и вообще отменён, чему способствует размещаемый в теле обработчика события следующий программный код: e.Cancel = true; // e – событие типа CancelEventArgs. § Closed. Уже после закрытия формы. Назад пути нет. В обработчике этого события размещается любой код для "очистки" (освобождения ресурсов) после закрытия формы. Диалог MessageBox Для вывода каких-либо сообщений можно использовать метод Show класса MessageBox из пространства имен System.Windows.Forms.
MessageBox.Show(“This is a test”, ”Title”, MessageBoxButtons.OK);
Используя этот класс, можно организовать простую интерактивность с пользователем. if(MessageBox.Show(“Press Yes or No?”, ”Title”, MessageBoxButtons.YesNo) == DialogResult.Yes) {…}; SDI- и MDI-приложения Традиционно существует три разновидности приложений, которые могут создаваться MS, а именно: · Приложения, основанные на диалоговом окне. Такие приложения предоставляются пользователям в виде единого диалогового окна, с помощью которого может быть осуществлен доступ ко всем функциональным возможностям. · Однодокументные интерфейсы (Single Document Interface, SDI), Такие приложения предоставляются пользователям в виде меню, одной или нескольких линеек инструментов и одного окна, в котором пользователь может выполнять определенные действия. · Многодокументные интерфейсы (Multi-Document Interface, MDI). Такие приложения представляются пользователям в. таком же виде, что SDI-приложения, однако обладают способностью одновременно поддерживать несколько открытых окон. Примеры SDI- и MDI- приложения приведены на рис. 9. Рис. 9. MDI-приложение Приложения, основанные на диалоговом окне, обычно представляют собой небольшие одноцелевые приложения, которые ориентированы либо для решения конкретной задачи, требующей ввода небольшого количества данных, либо для работы с какими-то необычными типами данных. В качестве примера такого приложения можно привести Calculator (калькулятор), поставляемый вместе с MS Windows. Однодокументные интерфейсы, как правило, предназначаются для решения какой-то одной конкретной задачи, при этом они позволяют пользователю загружать в приложение единственный документ, с которым он и будет вести работу (более подробно будет рассмотрен в лабораторной работе №3 при изучении диалоговых окон). Эта задача предполагает выполнение пользователем большого количества действий, и зачастую пользователю могут потребоваться возможности, позволяющие сохранять или загружать плоды своего труда. Хорошим примером SDI-приложений могут служить MS Paint и WordPad, также поставляемые совместно с MS Windows. Однако такие приложения допускают открытие только одного документа в каждый конкретный момент времени, поэтому если пользователю требуется открыть второй документ, то ему будет необходимо открывать новый экземпляр SDI-приложения, у которого будет отсутствовать связи с первым документом и, следовательно, конфигурация, созданная для первого экземпляра, не окажет никакого влияния на конфигурацию второго. Например, вы в MS Paint выбрали красный цвет в качестве цвета рисования, затем открываете второй экземпляр MS Paint, а здесь в качестве цвета, используемого для рисования, выбирается цвет по умолчанию. Он будет черный. Многодокументные интерфейсы почти полностью аналогичны SDI-приложениям за исключением того, что они обладают возможностью поддерживать более одного открытого документа в различных окнах, которые могут быть открыты одновременно. Одним из простых признаков MDI-приложения является наличие пункта Window на правой стороне линейки меню перед пунктом Help. Примерами MDI-приложений служат Adobe Acrobat Reader и MS Word 97. Четвертый тип приложений представлен MS Office 2000. Этот тип является смесью SDI- и MDI- приложений: окна, предоставляемые пользователю, имеют различное местоположение, и каждое окно отображается в линейке заданий. Такое приложение представляет собой несколько MDI- приложений, поскольку основное приложение не будет закрыто до тех пор, пока не будут закрыты все окна, а с помощью пункта меню Windows можно выбирать, какой именно из открытых.документов будет просматриваться, хотя при этом собственно пользовательский интерфейс представляет собой SDI-интерфейс. Создание MDI-приложений. Для создания MDI необходимо: - чтобы решаемая пользователем задача требовала одновременно несколько открытых документов. Примером задач такого рода является текстовый редактор или, как в приведенном выше примере, программа просмотра документов, - предусмотреть панели инструментов для наиболее часто выполняемых в приложении операций, таких как изменение стиля шрифта, загрузка и сохранение документов, - обязательно следует предусмотреть пункт меню Window, который позволял бы пользователю изменять положение открытых окон друг относительно друга (налагая их друг на друга в виде черепицы или каскада) и предоставлял бы ему список всех открытых окон. Еще одной особенностью MDI-приложений является то, что если имеется некоторое открытое окно и в этом окне существует некоторое меню, то оно должно быть интегрировано в основное меню приложения. Любое MDI-приложение состоит, по крайней мере, из двух разных окон. Первое окно называется MDI-контейнером, а окно, которое может быть открыто в контейнере, называется дочерним MDI-окном. При упоминании первого окна будут использоваться взаимозаменяемые термины "MDI-контейнер" и "основное окно", а при упоминании второго — термины "дочернее MDI-окно" ИЛИ просто "дочернее окно". При создании MDI-приложения следует: 1. Создать Windows Application в Visual Studio. 2. Чтобы превратить основное окно приложения из формы в MDI-контейнер, достаточно просто присвоить свойству формы isMdiContainer значение true. При этом произойдет изменение цвета фона, указывающее на то, там не следует размещать видимые управляющие элементы, хотя такая возможность по-прежнему существует и может при определенных обстоятельствах оказаться полезной. 3. Для создания дочернего окна следует добавить в проект новую форму, выбрав Windows Form из диалогового окна, которое открывается при выборе пункта меню Project | Add New Item. 4. Эта форма становится дочерним окном, когда его свойству MdiParent присваивается ссылка на основное окно. Этому свойству нельзя присваивать значение с помощью панели Properties, это необходимо выполнять программным путем. До того, как появится возможность выводить MDI-приложение на экран в его основном виде, нужно выполнить еще две вещи: 1. Необходимо передать MDI-контейнеру информацию о том, какие окна должны выводиться. 2. Затем вывести их, для чего следует просто создать новый экземпляр формы, которую вы собираетесь выводить, а затем вызвать для нее метод show(). Конструктор формы, предназначенной для вывода в качестве дочернего окна, должен привязаться к родительскому контейнеру. Это достигается за счет присваивания его свойства MdiParent экземпляру MDI-контейнера. Стандартный делегат Для большего понимания такого сложного термина приведем простой «жизненный» пример: Дядя Федор и кот Матроскин отправились ловить рыбу. На берегу они расставили свои удочки и решили, что один из них будет следить за клевом, а другой, дабы рационально и с пользой провести это время, либо червей копать, либо просто ОТДЫХАТЬ. Кроме того, конструкции удочек значительно отличались, поэтому было принято решение просто прикрепить инструкции по использованию к каждой из них. Делегатом в таком важном деле был назначен Дядя Федор. Другими словами: ДЕЛЕГАТ – это представитель, наделенный особыми полномочиями определенными заранее (в нашем случае, «обработать» клюющую рыбу, насадить нового червяка, вообщем, вести процесс рыбалки). В отличие от полномочий - действий делегата, заранее не известно случившееся событие, инициирующее его работу (клюет рыба, сорвалась рыба …). А как именно реагировать при наступлении того самого события, делегату станет известно из предопределенной инструкции. В любом случае, делегат, настроенный на метод, должен обеспечить реакцию на данное событие. public delegate void EventHandler(object sender, EventArgs e); В этом процессе кроме делегата (Дяди Федора) есть также другие участники: 1) событие, произошедшее с удочкой (object sender). 2) инструкция по использованию среагировавшей удочки (EventArgs e). Инициатор действия - это всегда sender (объект отправитель, источник события), а второй участник (инструкция по использованию удочкой, на которую воздействует sender) – тип, содержащий спецификацию для данного события информацию (предопределённый класс EventHandler, в котором хранится информация о событии). Делегат - установленым образом обрабатывает послание sender- а, согласно инструкции EventArgs. При создании самого делегата–представителя класса–делегата EventHandler, прежде всего, определяется соответствующий метод, выполнение которого обеспечивает реакцию на событие. Таким образом, для реализации перехвата события достаточно использовать: 1. для идентификации события. Базовый класс EventArgs, если уведомление о произошедшем событии не связано с генерацией дополнительной информации или производный от данного класса класс, если необходимо передавать дополнительную информацию, связанную с событием, 2. предопределённый класс EventHandler для реализации ссылки на метод–обработчик события.
Комп'ютерний практикум №2. Обзор управляющих элементов и получение навыков работы с ними. Диалоговые окна. OpenFileDialog. SaveFileDialog. OpenFileDialog и SaveFileDialog для SDI-приложений. FontDialog. ColorDialog. Элемент управления NotifyIcon. Цель:изучение класса Control, основных свойств и методов стандартных элементов управления, изучение класса CommonDialog. Класс Control Пространство имен System.Windows.Forms включает один класс, который является базовым почти для всех элементов управления и форм System.Windows.Forms.Control (см. рис.1). Он реализует основную функциональность для создания экранов, которые видит пользователь. Класс Control унаследован от класса System.ComponentModel.Component. Класс Component обеспечивает классу Control инфраструктуру, необходимую для того, чтобы его можно было перетаскивать и помещать на поле конструктора, а также, чтобы он мог включать в себя другие элементы управления. Класс Control предлагает огромный объем функциональности классам, наследуемым от него. Рассмотрим методы и свойства по их функциональности: · размер и положение (табл. 1); · внешний вид (табл. 2); · взаимодействие с пользователем (табл. 3); · функциональность Windows (табл. 4); · прочая функциональность (табл. 5). Рис. 1. Иерархия классов в пространстве имен System.Windows.Forms.Control. Таблица 1. Размер и положение
Таблица 2. Внешний вид
Таблица 3. Взаимодействие с пользователем
Таблица 4. Функциональность Windows
Таблица 5. Прочая функциональность
Toolbox Окно Toolbox (панель инструментов, View —> Toolbox, или сочетание клавиш Ctrl+Alt+X) содержит компоненты Windows-форм, называемые также элементами управления, которые размещаются на форме. Оно состоит из нескольких закладок: My User, Controls, Components, Data, Windows Forms и General (рис. 2.): Рис. 2. Окно Toolbox Наиболее часто употребляемой закладкой является Windows Forms. Для размещения нужного элемента управления на форму есть несколько способов: 4. Путем выбора в панели инструментов и кликом на форме места, где он будет установлен; 5. путем перетаскивания с панели инструментов 6. Двойным щелчком мыши на выбранном элементе в панели инструментов с помощью конструктора Элемент управления TextBox Элемент управления TextBox (поле ввода) предназначен для хранения текста (одной или нескольких строк). При желании текст в TextBox может быть настроен как "только для чтения", а в правой и нижней части можно поместить полосы прокрутки. Класс TextBox происходит непосредственно от класса TextBoxBase, обеспечивает общими возможностями как TextBox, так и RichTextBox. Свойства, определенные в TextBoxBase, представлены в таблице 6. Таблица 6. Свойства TextBoxBase
В TextBoxBase также определено множество методов: для работы с буфером обмена (Cut, Copy и Paste), отменой ввода (Undo) и прочими возможностями редактирования (Clear, AppendText и т. п.). Из всех событий, определенных в TextBoxBase, наибольший интерес представляет событие TextChange. Это событие происходит при изменении текста в объекте класса, производном от TextBoxBase. Например, его можно использовать для проверки допустимости вводимых пользователем символов (например, предположим, что пользователь должен вводить в поле только цифры или, наоборот, только буквы). Свойства, унаследованные от Control и от TextBoxBase, определяют большую часть возможностей TextBox. Свойства представлены в таблице 7. Таблица 7.2. Свойства, определенные в классе TextBox
Значения перечисления HorizontalAlignment представлены в таблице 8. Таблица 8. Значения перечисления HorizontalAlignment
Класс Button Кнопка (button) - это самый простой из всех элементов управления и при этом наиболее часто используемый. Можно сказать, что кнопка - это возможность принять ввод (щелчок кнопкой мыши или набор на клавиатуре) наиболее простым способом. Непосредственный предок класса System.Windows.FormButton в иерархии классов.NET - это класс ButtonBase, обеспечивающий общие возможности для целой группы производных от него элементов управления (таких как Button, CheckBox и RadioButton). Некоторые свойства ButtonBase представлены в таблице 9.
Таблица 9. Свойства ButtonBase
Сам класс Button не определяет каких-либо дополнительных возможностей помимо унаследованных от ButtonBase, за единственным, но существенным исключением свойства DialogResult. Это свойство позволяет возвращать значение при закрытии диалогового окна, например, при нажатии кнопок ОК или Cancel (Отменить). В подавляющем большинстве случаев выравнивание текста, размещенного на кнопке, производится по центру, так что текст будет размещен строго посередине кнопки. Однако если нам по каким-то причинам необходимо использовать другой стиль выравнивания, в нашем распоряжении - свойство TextAlign, определенное в классе ButtonBase. Для TextAlign используются значения из перечисления ContentAlignment (таблица 10). Значения из того же перечисления используются и для определения положения изображения на кнопке. Таблица 10. Значения перечисления ContentAlignment
Элемент управления CheckBox Для флажка (тип CheckBox) предусмотрено три возможных состояния. Как и тип Button, CheckBox наследует большую часть своих возможностей от базовых классов Control и ButtonBase. Однако в этом классе существуют и свои собственные члены, обеспечивающие дополнительные уникальные возможности. Наиболее важные свойства CheckBox представлены в таблице 11. Таблица 11. Свойства класса CheckBox
Возможные состояния флажка (Indeterminate можно использовать только тогда, когда для свойства ThreeState установлено значение true) представлены в таблице 12. Таблица 12 Значения перечисления CheckState
Состояние "значение не определено" (indeterminate) может быть установлено, например, для верхнего элемента иерархии, в которой для одной части подчиненных элементов флажок установлен, а для другой - снят. Комбинированные списки Как и списки (объекты ListBox), комбинированные списки (объекты ComboBox) позволяют пользователю производить выбор из списка заранее определенных элементов. Однако у комбинированных списков есть одно существенное отличие от обычных: пользователь может не только выбрать готовое значение из списка, но и ввести свое собственное. Класс ComboBox наследует большинство своих возможностей от класса ListBox (который, в свою очередь, является производным от Control), однако в нем предусмотрены и собственные важные свойства, представленные в таблице 14. Таблица 14. Свойства ComboBox
©2015- 2025 zdamsam.ru Размещенные материалы защищены законодательством РФ.
|