Создание обработчиков для меню дочерней формы

Созданные пункты меню для дочернего окна должны инициировать выполнение соответствующих функций (Отменить, Создать, Редактировать, Сохранить и Удалить) приложения в отношении объектов конкретного дочернего окна. Для дочернего окна "Данные по сотруднику" эти функции должны выполнять соответственно:

1. отмену редактирования данных по сотруднику (функция "Отменить"),

2. создавать новые данные по сотруднику (функция "Создать"),

3. редактировать данные по сотруднику (функция "Редактировать"),

4.  сохранять созданные вновь или отредактированные функция по сотруднику (функция "Сохранить") и

5. удалять данные по сотруднику (функция "Удалить").

Описанную функциональность целесообразно реализовать в программе в виде методов класса созданного класса FormEmployee. В приложении необходимо создать следующие методы:

  • Undo - отменить;
  • New - создать;
  • EditToolStripMenuItem - редактировать;
  • Save - сохранить;
  • Remove - удалить.

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

Для создания метода Undo в коде файла FormEmployee.cs добавьте следующий метод:

private void Undo(){ MessageBox.Show("метод Undo"); } Далее создаем обработчик события вызова пункта меню "Отменить". Для этого в дизайнере формы класса FormEmployee делаем двойной щелчок на пункте меню "Отменить". Инструментальная среда VS сгенерирует следующий код:private void undoToolStripMenuItem_Click(object sender, EventArgs e) {    }

В код обработчика undoToolStripMenuItem_Click добавим вызов метода Undo:

private void undoToolStripMenuItem_Click(object sender, EventArgs e) {      Undo();   } Откомпилируем приложение и протестируем вызов метода Undo. В результате выбора пункта меню "Отменить" должно быть выведено диалоговое окно с сообщением, приведенным на рисунке 3.3.

Рис. 3.3. Дочернее окно с подключенным меню

Аналогичным образом создайте методы-заглушки для функций "Создать", "Редактировать", "Сохранить" и "Удалить".

Задание на лабораторную работу

  1. Изучить теоретический материал.
  2. Создать дочернее окно.
  3. В дочернее окно добавить пункты меню.
  4. Написать обработчик для вызова из главного меню дочернего окна.
  5. Создать коды методов-заглушек для функций приложения.
  6. Создать обработчики для вызова пунктов меню.

Протестировать работу приложения.

 

Лабораторная работа №4: Создание пользовательских диалоговых окон

Цель работы: Изучить основные способы построения диалоговых окон, их параметры и получить практические навыки в разработке

Основные сведения

Диалоговое окно - это форма, обладающая некоторыми специальными характеристиками. Первая отличительная черта большинства диалоговых окон - то, что их размер изменять нельзя. Кроме того, в диалоговых окнах обычно не используются элементы управления, помещаемые в верхнюю часть обычных форм: ControlBox, MinimizeBox и MaximizeBox. Для пользователя диалоговое окно в противоположность обычному является практически неизменяемым.

Диалоговые окна бывают модальные и немодальные. Если приложение открывает модальное окно, то работа приложения блокируется до тех пор, пока не будет закрыто модальное окно. Немодальные окна могут работать одновременно с породившим их главным окном приложения. Такие окна часто используются для "плавающих" инструментальных панелей, настройки различных параметров приложения, причем отсутствие модальности позволяет использовать в приложении измененные параметры, не закрывая окна настройки этих параметров.

Простейшее модальное диалоговое окно можно создать на базе класса MessageBox, входящего в библиотеку Microsoft /NET Framwork. В лабораторной работе 3 иллюстрировалось применение простейшего модального диалогового окна для вывода сообщения об активизации метода Undo. Для отображения диалогового окна использовался метод Show, передав ему через параметр текст сообщения "метод Undo". Прототип использованного метода Show следующий:

public static DialogResult Show(string message); Когда пользователь щелкает кнопку ОК, метод Show возвращает значение, равное DialogResult.OK

Существует множество перегруженных вариантов метода MessageBox.Show, позволяющих задать необходимый внешний вид диалоговой панели, а также количество и тип расположенных на ней кнопок.

Прототип наиболее общего варианта метода MessageBox.Show, позволяющий реализовать практически все возможности диалогового окна MessageBox, приведен ниже

public static DialogResult Show{string message, // текст сообщенияstring caption, // заголовок окнаMessageBoxButtons btns, // кнопки, расположенные в окнеMessageBoxIcon icon, // значок, расположенный в окнеMessageBoxDefaultButton defButton, // кнопка по умолчаниюMessageBoxOptions opt // дополнительные параметры};

Параметр caption позволяет задать текст заголовка диалогового окна MessageBox. С помощью параметра btns можно указать, какие кнопки необходимо расположить в окне диалогового окна. Этот параметр задается константами из перечисления MessageBoxButtons (таблица 4.1)

Таблица 4.1. Перечисление MessageBoxButtons

Константа Кнопки, отображаемые в окне MessageBox
ОК OK
OKCancel OK, Cancel
YesNo Yes, No
YesNoCancel Yes, No, Cancel
RetryCancel Retry, Cancel
AbortRetryIgnore Abort, Retry, Ignore

Параметр icon метода MessageBox.Show позволяет выбрать один из нескольких значков для расположения в левой части диалогового окна. Он задается в виде константы перечисления MessageBoxIcon (таблица 4.2).

Таблица 4.2. Перечисление MessageBoxIcon

Константа Значок
Asterisk, Information  
Error, Stop  
Exclamation, Darning  
Question  
None Значок не отображается

 

Параметр defButton метода MessageBox.Show предназначен для выбора кнопки, которая получит фокус сразу после отображения диалогового окна. Этот параметр должен иметь одно из значений перечисления MessageBoxDefaultButton (таблица 4.3).

Таблица 4.3. Перечисление MessageBoxDefaultButton

Константа Номер кнопки, получающей фокус ввода по умолчанию
Button l 1
Button 2 2
Button 3 3

 

Если в диалоговом окне отображаются кнопки Yes, No и Cancel, то они будут пронумерованы последовательно: кнопка Yes получит номер 1 (константа Button1), кнопка No - номер 2 (константа Button2), а кнопка Cancel - номер 3 (константа Button3).

Параметр opt метода MessageBox.Show позволяет задать дополнительные параметры. Эти параметры должны иметь значения из перечисления MessageBoxOptions (таблица 4.4).

Таблица 4.4. Перечисление MessageBoxOptions

Константа Описание
DefaultDesktopOnly Окно с сообщением отображается только на рабочем столе, выбранном по умолчанию
RightAlign Текст сообщения выравнивается по правому краю диалогового окна
RtlReading Текст отображается справа налево
ServiceNotification Окно отображается на активном рабочем столе, даже если к системе не подключился ни один пользователь. Данный параметр предназначен для приложений, работающих как сервисы ОС Microsoft Windows

Если в окне диалогового окна MessageBox имеется несколько кнопок, то для того, что бы определить, какую кнопку щелкнул пользователь, программа должна проанализировать значение, возвращенное методом MessageBox.Show.

Метод MessageBox.Show может вернуть одно из нескольких значений перечисления DialogResult (таблица 4.5).

Таблица 4.5. Перечисление DialoqResult

Константа Кнопка, при щелчке которой возвращается эта константа
Abort Abort
Cancel Cancel
Ignore Ignore
No No
None Модальное диалоговое окно продолжает работать
OK OK
Retry Retry
Yes Yes

Изменим метод Remove, добавив в него предупреждение перед удалением данных по сотруднику. Текст кода метода Remove должен иметь следующий вид:

private void Remove(){ DialogResult result = MessageBox.Show(" Удалить данные \n по сотруднику? ", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,         MessageBoxDefaultButton.Button2); switch (result) {   case DialogResult.Yes:       {//выполнить действия по удалению данных по сотруднику                 MessageBox.Show("Удаление данных");           break;       }   case DialogResult.No:       {//отмена удаления данных по сотруднику                 MessageBox.Show("Отмена удаления данных");           break;       } }

В результате исполнения кода приложения и выбора пункта меню "Удалить" будет выводиться предупреждение, приведенное на рисунке 4.1.

Рис. 4.1. Модальное диалоговое окно предупреждения

Диалоговое окно можно создать не только на основе класса MessageBox, но и с использованием Windows - формы.

Создадим новую форму FormAbout для вывода справочной информации о разрабатываемом приложении, которое должно иметь вид представленный на рисунке 4.2.

Рис. 4.2. Общий вид Windows - формы FormAbout

Для этого добавим в проект новый компонент (рисунок 4.3), выбрав из списка AboutBox (рис. 4.4).

Рис. 4.3. Выбор режима добавления нового компонента в проект

Рис. 4.4. Добавление нового компонента в проект

Для класса AboutBox можно задать логотип и дополнительную информацию. По умолчанию данный класс берет дополнительную информацию из метаданных сборки. Проверьте это.

Мы введем собственную информацию. Для этого изменим фрагмент кода конструктора класса 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 = "@РГЭУ, 2008"; this.labelCompanyName.Text = "Долженко А.И."; this.textBoxDescription.Text = "Дисциплина Современные технологии программирования. Студенческий проект";} Для открытия пользовательского модального диалогового окна используется метод ShowDialog. В лабораторной работе диалоговое окно должно открываться при щелчке пользователем на пункте в меню "Справка/О программе". Код для открытия диалогового окна может выглядеть следующим образом:// Открываем модальное диалоговое окноprivate void aboutToolStripMenuItem_Click(object sender, EventArgs e){ AboutBox1 aboutBox = new AboutBox1(); aboutBox.ShowDialog(this); }

Модальность формы определяет именно метод ShowDialog: при использовании кода ход выполнения программы будет приостановлен вплоть до того момента, пока метод ShowDialog не вернет соответствующее значение. Для пользователя это значит, что ему придется закрыть диалоговое окно, прежде чем он сможет выполнить какие-либо операции на главной форме.

После компиляции и загрузки приложения, вызвав пункт меню "Справка/О программе" на дисплеи будет выведено диалоговое окно, приведенное на рисунке 4.5.

Рис. 4.5. Вызов модального окна

При нажатии на кнопку ОК диалоговое окно будет автоматически закрыто и в ходе дальнейшего выполнения программы можно выяснить значение свойства DialogResult.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: