Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Дочерние окна, окна диалога




Для добавления в проект дочернего окна в окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекстном меню выбираем Add/ Add Windows Form…В нашем проекте появилась новая форма — будем называть ее дочерней.

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

Приложение должно получить от модального диалогового окна информацию, по щелчку какой кнопки оно было закрыто — ОК или Cancel. Диалоговое окно закрывается присвоением свойству DialogResult значения одного из членов перечисления DialogResult —DialogResult.OK или DialogResult.Cancel. Метод ShowDialog передает управление приложению и возвращает значение свойства DialogResult.

Таким образом, как минимум в диалоговом окне надо реализовать обработчики события Click кнопок ОК и Cancel, присваивающие свойству DialogResult соответствующее значение. Вот обработчик для кнопки ОК.

void OkButtonOnClick(object objSrc, EventArgs args)

{

 DialogResult =DialogResult.OK;

}

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

if (dlg.ShowDialog() ==DialogResult.OK)

{…

}

В Windows Forms этот процесс немного упрощен благодаря реализации свойства DialogResult в классе Button. Если свойству кнопки DialogResult присвоено значение одного из членов перечисления DialogResult, при щелчке кнопки свойству формы DialogResult автоматически присваивается значение и форма закрывается.

 

Закрыть окно можно так: this.Close().

Существуют стандартные диалоговые окна: OpenFileDialog.

Свойство FileName задает название файла, которое будет находиться в поле "Имя файла:" при появлении диалога. Свойство Filter задает ограничение файлов, которые могут быть выбраны для открытия — в окне будут показываться только файлы с заданным расширением. Через вертикальную разделительную линию можно задать смену типа расширения, отображаемого в выпадающем списке "Тип файлов". Например, Text Files (*.txt)|*.txt|AllFiles(*.*)|*.* что означает обзор либо текстовых файлов, либо всех. Свойство InitialDirectory позволяет задать директорию, откуда будет начинаться обзор. Если это свойство не установлено, исходной директорией будет рабочий стол.

Вызов окна выбора файлов и проверка, что файл был выбран:

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{…

Обращение к выбранному файлу - openFileDialog1.FileName

}

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

Еще одно стандартное окно – окно сообщений.

MessageBox.Show("Do you want save changes?",

"Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question) .

Возвращает значение, DialogResult.Yes или DialogResult. No.

Создание MDI-приложений

Такие программы, как блокнот и Microsoft Paint, относятся к SDI (Single — Document Interface) приложениям, способным работать только с одним документом. Другие, такие как Microsoft Word или Adobe Photoshop, поддерживают работу сразу с несколькими документами и называются MDI (Multiple — Document Interface) приложениями. Для создания такого приложения добавим в него дочернюю форму и устанавливаем свойству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Теперь в обработчике события, которое должно инициировать появление новой формы (пусть эта форма имеет имя blank), записываем следующие действия:

private void mnuNew_Click(object sender, System.EventArgs e)

{

//Создаем новый экземпляр формы frm

blank frm = new blank();

// формируем и задаем уникальное имя для формы

frm.DocName = "Untitled " + ++openDocuments;

frm.Text = frm.DocName;

frm.MdiParent = this;

//Указываем, что родительским контейнером нового экземпляра будет эта форма.

frm.MdiParent = this;

//Вызываем форму

frm.Show();

}

Переменная openDocuments должна быть объявлена в классе главной формы, а переменная DocName - в классе frm как public string DocName = "".

Метод LayoutMdi определяет, как дочерние окна будут располагаться по отношению друг к другу. Он содержит перечисление MdiLayout, содержащее четыре члена:

1) ArrangeIcons переключает фокус на выбранную форму

2) Cascade - располагаются каскадом

3) TileHorizontal - располагаются горизонтально

4) TileVertical - располагаются вертикально.

 

Timer

       Таймер генерирует последовательность событий Tick().

Основные свойства элемента:

- Interval – период генерации события Tick(). Задается в миллисекундах

- Enable (bool) – разрешение работы

NotifyIcon

Некоторые программы, такие как словари и антивирусы, при запуске остаются в области уведомлений панели задач, откуда их можно развернуть, дважды щелкнув на иконке приложения (рис.1а). Элемент управления NotifyIcon и представляет собой отображение запущенного приложения в области задач.

                     

Рис.1а                         Рис. 1б                                Рис. 1в

Обычно при нажатии правой кнопкой мыши на элементе в области уведомления появляется контекстное меню, предлагающее открыть или скрыть приложение (рис.1б). Поэтому для работы с этим элементом на форму необходимо положить кроме элемента NotifyIcon, еще элемент контекстного меню ContextMenu. Свойства этих элементов задаются следующим образом:

Изображение, используемое в качестве иконки (свойство Icon) элемента NotifyIcon, будет выводиться в область уведомлений, когда свойство notifyIcon1.Visible=true. Значение свойства Text представляет собой текст всплывающей подсказки, появляющейся при наведении курсора на иконку приложения (рис.1в).

Предполагается, что иконка в области уведомлений будет появляться, когда окно программы сворачивается. При этом генерируется событие Resize – изменения размера формы. Для того, чтобы проверить, что событие сгенерировалось именно при сворачивании окна, проверяется свойство WindowState (состояния окна). Таким образом, обработчик этого события может иметь следующий вид:

private void Form1_Resize(object sender, EventArgs e)

   {

       if (WindowState == FormWindowState.Minimized)

       {

           notifyIcon1.Visible = true;

           Hide();

       }

   }

Требования к лабораторной работе:

 Разработать MDI-приложение, позволяющее открывать дочерние окна, выполняющие задание согласно варианту. Для каждого задания предусмотреть его запуск, паузу, останов. Предусмотреть окно параметров, открывающееся как модальное. При сворачивании главного окна в системной области задач должна появиться иконка приложения. Контекстное меню иконки должно включать пункты Закрыть приложение, Развернуть приложение и О программе. Варианты заданий предполагают использование таймера.

Варианты заданий к лабораторной работе










Последнее изменение этой страницы: 2018-04-12; просмотров: 289.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...