Лабораторная работа Построение диаграммы декомпозиции первого уровня в нотации idef0 Цель работы
Скачать 8.2 Mb.
|
Лабораторная работа №10Создание пользовательских диалоговых окон, панели инструментов,контекстного меню и строки состояния клиентского приложения ИСЦель работы: Изучить основные способы разработки главного меню приложении. Получить практические навыки в создании главного меню приложения. Изучить основные способы разработки многооконных приложений, способы построения диалоговых окон, их параметры, способы построения панели инструментов и контекстного меню, их параметры План проведения занятия
Краткие теоретические сведения Создание меню в режиме проектированияДля построения в режиме проектирования главного меню и связанной с ним структуры достаточно перетащить на форму элемент управления, называемый MainMenu. (В Visual Studio 2005 элемент управления для создания меню называется MenuStrip, а для создания инструментальных панелей - ToolStrip.) После перетаскивания метка с изображением этого элемента управления появляется ниже формы, а на форме появляется элемент меню с информационным полем, в котором можно задать название пункта меню, и двумя указателями на правого брата и старшего сына, позволяющими перейти к следующему пункту меню того же уровня или опуститься на нижний уровень. Технология создания меню вручную интуитивно ясна и не вызывает обычно никаких проблем В пространстве имен System.Windows.Forms предусмотрено большое количество типов для организации ниспадающих главных меню (расположенных в верхней части формы) и контекстных меню, открывающихся по щелчку правой кнопки мыши. Элемент управления ToolStrip представляет собой контейнер, используемый для создания структур меню, панелей инструментов и строк состояний. Элемент управления MenuStrip - это контейнер для структур меню в приложении. Этот элемент управлении наследуется от ToolStrip. Система меню строится добавлением объектов ToolStripMenu к menuStrip. Класс ToolStripMenuItem служит для построения структур меню. Каждый объект ToolStripMenuItem представляет отдельный пункт в системе меню. Для отображения диалогового окна использовался метод Show, передав ему через параметр текст сообщения "метод Undo". Прототип использованного метода Show следующий: public static DialogResult Show(string message); Когда пользователь щелкает кнопку ОК, метод Show возвращает значение, равное DialogResult.OK Прототип наиболее общего варианта метода MessageBox.Show, позволяющий реализовать практически все возможности диалогового окна MessageBox, приведен ниже public static DialogResult Show { string message, // текст сообщения string caption, // заголовок окна MessageBoxButtons btns, // кнопки, расположенные в окне MessageBoxIcon icon, // значок, расположенный в окне MessageBoxDefaultButton defButton, // кнопка по умолчанию MessageBoxOptions opt // дополнительные параметры }; Параметр caption позволяет задать текст заголовка диалогового окна MessageBox. С помощью параметра btns можно указать, какие кнопки необходимо расположить в окне диалогового окна. Этот параметр задается константами из перечисления MessageBoxButtons Параметр icon метода MessageBox.Show позволяет выбрать один из нескольких значков для расположения в левой части диалогового окна. Он задается в виде константы перечисления MessageBoxIcon Порядок выполнения работы Задание 1. Создание меню
Главное меню, должно включать следующие пункты: "Объект", "Справочник", "Справка". При помощи графических средств можно настроить свойства любого элемента меню. Для пунктов меню задайте свойства: "Объект" - свойство Name равным objektToolStripMenuItem, "Выход" - exitToolStripMenuItem, "Справка" - HelpToolStripMenuItem. Рис. 10.1. Элемент управления MenuStrip
Элемент управления MenuStrip позволит вводить текст меню непосредственно в элементы меню рис. 10.2. Рис. 10.2. Простое меню на форме
Сделайте двойной щелчок на пункте меню "Выход" объект xitToolStripMenuItem Visual Studio автоматически сгенерирует оболочку для обработчика события Click и перейдет в окно кода, в котором нам будет предложено создать логику метода (в нашем случае exitToolStripMenuItem_Click): private void exitToolStripMenuItem_Click(object sender, EventArgs e) { // Здесь мы определяем реакцию на выбор пользователем пункта меню }
Рис. 10.3. Событие Click и обработчик события exitToolStripMenuItem_Click
private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); }
private void objektToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("Пункт меню Объект"); } При создании меню графическими средствами Visual Studio автоматически внесет необходимые изменения в служебный метод InitializeComponent и добавит переменные-члены, представляющие созданные элементы меню. Задание 2. Создание дочерней формы Основа Интерфейса (MDI) приложения - MDI родительская форма. Это - форма, которая содержит MDI дочерние окна. Дочерние окна являются "подокнами", с которыми пользователь взаимодействует в MDI приложении.
Данный обработчик приведет к выводу на экран дочернего окна private void menuItemEmploye_Click(object sender, System.EventArgs e) { // Создать объект FEmployee класса FormEmployee FormEmployee FEmployee = new FormEmployee(); // Установить родительское окно для дочернего FEmployee.MdiParent = this; // Вывести на экран дочерее окноFEmployee.Show(); } Задание 3. Создание меню в дочерней форме
"Отменить" (undoToolStripMenuItem), "Создать" (createToolStripMenuItem), "Редактировать" (editToolStripMenuItem), "Сохранить" (saveToolStripMenuItem) , "Удалить" (removeToolStripMenuItem).
(Separator - name = toolStripSeparator1).
Рис. 10.4. Дочернее окно с меню
В дочерней форме (FormEmployee) сформированы пункты меню "Действие" и "Отчет". При загрузке дочерней формы меню родительской и дочерних форм должны были объединены и составлять следующую последовательность: "Объект", "Действие", "Отчет", "Справочник" и "Справка". Объединение пунктов меню производится с помощью задания значений свойств MegreAction и MegreIndex для объектов ToolStripMenuItem.
Рис.10.5. Дочернее окно с подключенным меню Задание 4. Создание обработчиков для меню дочерней формы Созданные пункты меню для дочернего окна должны инициировать выполнение соответствующих функций (Отменить, Создать, Редактировать, Сохранить и Удалить) приложения в отношении объектов конкретного дочернего окна. Для дочернего окна "Данные по сотруднику" эти функции должны выполнять соответственно: отмену изменения данных по сотруднику (функция "Отменить"), создание новых данных по сотруднику (функция "Создать"), внесение изменений в данные по сотруднику (функция "Редактировать"), сохранение созданных вновь или отредактированных данных по сотруднику (функция "Сохранить") и удаление данных по сотруднику (функция "Удалить"). Реализовать описанную функциональность целесообразно в программе в виде методов класса созданного класса FormEmployee.
Undo-отменить; New-создать; Edit -редактировать; Save -сохранить; Remove-удалить На начальных этапах проектирования, как правило, неясна реализация каждого метода, поэтому целесообразно их выполнять в виде методов-заглушек, которые только сообщают пользователю о своем вызове, а в дальнейшем необходимо написать реальный код.
private void Undo( ) { MessageBox.Show("метод Undo");}
private void undoToolStripMenuItem_Click(object sender, EventArgs e){}
private void undoToolStripMenuItem_Click(object sender, EventArgs e){Undo();}
Рис. 10.6. Дочернее окно с подключенным меню
Задание 5. Создать модальное диалоговое окно предупреждения
private void Remove() {DialogResult result = MessageBox.Show(" Удалить данные \n по сотруднику? ","Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2); switch (result){case DialogResult.Yes: {//выполнить действия по удалению данных по сотруднику MessageBox.Show("Удаление данных");} case DialogResult.No: {//отмена удаления данных по сотруднику MessageBox.Show("Отмена удаления данных"); break;}} В результате исполнения кода приложения и выбора пункта меню "Удалить" будет выводиться предупреждение рис. 10.7. Рис. 10.7. Модальное диалоговое окно предупреждения Диалоговое окно можно создать не только на основе класса MessageBox, но и с использованием Windows - формы.
Рис. 10.8. Общий вид Windows - формы FormAbout
Рис. 10.9. Выбор режима добавления нового компонента в проект Измените фрагмент кода конструктора класса AboutBox1 и введите собственную информацию.
public AboutBox1() { InitializeComponent(); this.Text = String.Format("О программе {0}", AssemblyTitle); this.labelProductName.Text = AssemblyProduct; this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); this.labelCopyright.Text = "ПВГУС, 2009"; this.labelCompanyName.Text = "Иванченко Елена, БИ-401"; this.textBoxDescription.Text = "Студенческий проект по курсу Проектирование ИС"; } Для открытия пользовательского модального диалогового окна используется метод ShowDialog. В лабораторной работе диалоговое окно должно открываться при щелчке пользователем на пункте в меню "Справка / О программе". Код для открытия диалогового окна может выглядеть следующим образом: // Открываем модальное диалоговое окно private void aboutToolStripMenuItem_Click(object sender, EventArgs e) {AboutBox1 aboutBox = new AboutBox1(); aboutBox.ShowDialog(this); } После компиляции и загрузки приложения, вызвав пункт меню «Справка» / «О программе» на дисплеи будет выведено диалоговое окно, приведенное на рис. 10.10. Рис. 10.10. Вызов модального окна При нажатии на кнопку ОК диалоговое окно будет автоматически закрыто и в ходе дальнейшего выполнения программы можно выяснить значение свойства DialogResult. Задание 6. Разработка панели инструментов Элемент управления ToolStrip используется непосредственно для построения панелей инструментов. Данный элемент использует набор элементов управления, происходящих от класса ToolStripItem. В Visual Studio.NET предусмотрены средства, которые позволяют добавить панель инструментов при помощи графических средств.
Рис.10.11. Окно свойств панели инструментов
Рис. 10.12. Форма FormEmployee с панелью инструментов
Рис. 10.13. Свойство Image для кнопки панели инструментов
Графические файлы расположены в папке Visual Studio 2005\VS2005ImageLibrary\bitmaps\commands\16color (для лабораторной работы графические файлы можно найти в папке Лабораторные работы). Рис. 10.14. Форма с панелью инструментов Каждая кнопка панели инструментов, которая является объектом класса toolStripButton, может содержать текст, или изображение, или и то и другое. Созданная панель инструментов содержит пять кнопок. По функциональности каждой из этих кнопок будут соответствовать пункты меню "Отменить", "Создать", "Редактировать", "Сохранить" и "Удалить". Для удобства пользователя целесообразно снабдить кнопки панели инструментов всплывающими подсказками при фокусировке курсора на данной кнопке.
Рис. 10.15. Формирование подсказки для кнопки На рис.10.16 показан вывод подсказки при фокусировке курсора на кнопке панели инструментов. Рис. 10.16. Вывод подсказки для кнопки
private void toolStripButtonUndo_Click(object sender, EventArgs e) { Undo(); } Задание 7. Создание контекстное меню Класс ContextMenuStrip применяется для показа контекстного меню, или меню, отображаемого по нажатию правой кнопки мыши.
Рис. 10.17. Вид контекстного меню
Рис. 10.18. Подключение контекстного меню к форме Выполните компиляцию проекта и запустите приложения на выполнение, затем выберите из главного меню пункт "Сотрудник" и на появившейся форме щелкните правой кнопкой мыши. В результате на форме должно всплыть контекстное меню. Рис. 10.19. Активизация контекстного меню
private void undo1ToolStripMenuItem_Click(object sender, EventArgs e) {Undo();} Содержание отчета
Контрольные вопросы
Литература [3-4, 11-12]. |