6360

Класс форм Form

Реферат

Информатика, кибернетика и программирование

Класс форм Form Класс Form добавляет значительную функциональность базовому классу Control. Клиентское Windows приложения может содержать одну форму или множество форм. Эти формы могут быть приложениями, основанными на Single Document Interface (SDI...

Русский

2013-01-03

94.05 KB

8 чел.

Класс форм Form

Класс Form добавляет значительную функциональность базовому классу Control. Клиентское Windows приложения может содержать одну форму или множество форм. Эти формы могут быть приложениями, основанными на Single Document Interface (SDI) или Multiple Document Interface (MDI) интерфейсе. Класс Form является производным от класса ContainerControl, который в свою очередь является производным от ScrollableControl (производный от класса Control). В связи с этим, можно понять, что форма может быть контейнером для других ЭУ и обладает возможностью выполнять скроллинг, когда клиентскую область не может полностью отобразиться в заданном окне, а также обладает многими другими свойствами, методами и событиями.

1. Создание и уничтожение формы

В ходе процесса создания и уничтожения формы – объекта класса Form инициируется следующая последовательность событий: 1) Load; 2) Activated; 3) Deactivated; 4) Closing; 5) Closed.

Событие Load возникает после инициализации объекта, но перед тем, как форма станет видимой на экране. При обработке данного события можно считать, что все внутренние объекты формы уже созданы. Событие Activated возникает, когда форма уже стала видимой и текущей, но пользовательская область еще не отрисована. Событие Activated возникает, когда форма перестает быть активной (при переходе пользователя к работе с другим приложением). Событие Closing возникает в процессе закрытия формы и предоставляет возможность управлять процессом закрытия приложения. Данное событие передает в качестве второго параметра объект типа CancelEventArgs, который имеет свойство Cancel. Если этому свойству задать значение true, то форма не будет закрываться. Событие Closed возникает после закрытия формы, позволяя освободить все выделенные ресурсы (закрыть файлы, закрыть соединение с базой данных). Если в программе вызывается метод Application.Exit() и имеются открытые формы, то события Closing и Closed возникать не будут.

2. Модальные и немодальные формы

При разработке графического интерфейса важным является понятие модального и немодального окна. Модальное окно не позволяет, если оно открыто, временно переключиться на работу с другим окном данного приложения. Выйти из модального окна можно, только закрыв его. Немодальные окна допускают параллельную работу в разных окнах приложения. Форма называется модальной или немодальной в зависимости от того, какое у нее окно. Тип открываемого окна зависит от того, какой метод для открытия формы используется. Метод Show() открывает форму как немодальную, а метод ShowDialog() – как модальную. Название метода отражает основное назначение модальных форм – они предназначены для организации диалога с пользователем, и пока диалог не завершится, покидать форму не разрешается.

Если переменная frm хранит ссылку на объект класса производного от Form, то после вызова метода frm.Show(), выполнение программы сразу переходит к следующему оператору. При вызове метода frm.ShowDialog() переход к следующему оператору программы произойдет только после закрытия формы frm. Следующий пример показывает создание формы (объект с именем MyFormClass) и ее отображение на экране:

MyFormClass frm = new MyFormClass();

frm.Show();

 

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

  1.  OK – работа с формой завершилась успешно (пользователь выполнил требуемую задачу);
  2.  Cancel – работа с формой завершилась не успешно (пользователь не выполнил требуемую задачу);
  3.  Yes – пользователь ответил утвердительно на заданный вопрос;
  4.   No – пользователь ответил отрицательно на заданный вопрос.

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

Предположим, что в приложении нужно ввести номер телефона пользователя. Для этого создается форма, которая имеет текстовое поле (TextBox) ввода и две кнопки (Button); на одной написано «Сохранить», а на другой «Отменить». Тогда, если свойству DialogResult кнопки с надписью «Сохранить» задать значение DialogResult.OK, а свойству DialogResult кнопки с надписью «Отменить» задать значение DialogResult.Cancel, то если одну из них нажать, то форма становится невидимой (но не уничтожается) и в качестве результата возвращается одно из заданных значений. Отметим, что форма не уничтожается, а просто свойству Visible задается значение false. Это делается для того, чтобы можно было получить введенные пользователем данные с помощью свойств класса формы. В результате описания свойства данной диалоговой формы для номера телефона, родительская форма может получить значение, а уже затем вызвать метод Close() для закрытия формы. Ниже приведено описание данной диалоговой формы:

class Phone : Form {

TextBox txtPN = new TextBox();

 Button btnOK = new Button();

Button btnCancel = new Button();

public Phone() { // конструктор

Text = "Введите номер телефона.";

Size = new Size(180, 120);

txtPN.Location = new Point(10,10);

txtPN.Size = new Size(150,10);

btnOK.Location = new Point(10,40);

btnOK.Text = "Сохранить";

btnOK.DialogResult = DialogResult.OK;

btnCancel.Location = new Point(90,40);

btnCancel.Text = "Отменить";

btnCancel.DialogResult = DialogResult.Cancel;

Controls.AddRange(

new Control[] { txtPN, btnOK, btnCancel });

 }

public string PhoneNumber { // свойство класса 

get { return txtPN.Text; }

set { txtPN.Text = value; }

 }

}

Отметим, что обработчики событий для кнопок не задаются, так как для них заданы свойства DialogResult и форма будет становиться невидимой после их нажатия. В классе также описано единственное добавленное свойство PhoneNumber. Ниже показан пример вызова данного Phone диалога:

string s;

Phone frm = new Phone(); //создаем экземпляр диалога 

frm.ShowDialog(); // показываем диалог 

if (frm.DialogResult == DialogResult.OK)

{ s = "Номер телефона " + frm.PhoneNumber; }

    else if (frm.DialogResult == DialogResult.Cancel)

{ s = "Номер телефона не введен.";}

  frm.Close();

3. Многодокументный интерфейс Multiple Document Interface 

Многодокументный интерфейс (Multiple Document Interface, MDI) используется для приложений, которые могут в клиентской области основной формы показывать много экземпляров одного или разных типов форм, которые показывают разное содержание (документы). Например, редактор текстов, который одновременно показывает в разных дочерних окнах содержание разных документов. Однако следует понимать, что под документом понимается не только текст, но и информация любого другого типа (изображение, таблицы данных, видео и т.п.). Используемые дочерние формы не выходят за границы основной формы приложения.

Для организации MDI интерфейса следует в основной форме приложения задать свойству IsMDIContaner значение true. А для того, чтобы дочерние окна вели себя соответствующим образом (открывались в родительском окне), у них нужно присвоить свойству MdiParent ссылку на данную родительскую форму. Например, в методе основной формы можно создать метод, который будет показывать дочерние формы:

private void ShowMdiChild(Form childForm) {

childForm.MdiParent = this; // this – основная форма 

childForm.Show();

}

В основной форме может быть открыто одновременно много дочерних форм. Свойство формы ActiveMdiChild ссылается на окно, с которым работает в данный момент пользователь. Используя данное свойство можно получить все данные связанные с этой формой. Дочерние формы можно упорядочивать, вызывая метод LayoutMdi(), который в качестве параметра принимает значения перечисления MdiLayout. Возможными значениями данного перечисления являются: Cascade (упорядочит каскадом), TileHorizontal (упорядочить горизонтально) и TileVertical (упорядочить вертикально).

В системе разработки Visual Studio имеется специальный вид форм, у которого уже задано не только свойство IsMDIContaner = true, но и созданы меню и инструментальная полоса для выполнения стандартных операция с дочерними формами.

2. Стандартные диалоги

В библиотеке FCL имеется набор стандартных модальных форм, позволяющие выполнять стандартные действия:

  1.  OpenFileDialog – диалог выбора и открытия файла для считывания данных;
  2.  SaveFileDialog – диалог выбора и открытия файла для записыи данных;
  3.  PrintDialog – диалог вывода на печать;
  4.  PrintPreviewDialog – диалог предварительный просмотр результата печати;
  5.  ColorDialog – диалог выбора цвета;
  6.  FontDialog – диалог выбора шрифта;
  7.  FolderBrowserDialog – диалог работы с каталогами.

Все эти формы поддерживаются стандартными окнами операционной системы. Логика работы с этими формами однотипная и состоит в следующем:

  1.  описание и создание объекта нужного класса форм;
  2.  задание свойств данного объекта для его визуального представления и логики работы;
  3.  вызов у данного объекта метода ShowDialog() и сравнение полученного результата со значением DialogResult.OK;
  4.  если завершение успешное, то значения нужных свойств диалога сохраняются в переменных приложения.

Например, диалог OpenFileDialog имеет следующие основные свойства:

  1.  Title – заголовок диалоговой формы;
  2.  Filter – “описание1 | фильтр1 | описание2 | фильтр2”; например: "txt files (*.txt) | *.txt | All files (*.*) | *.*"
  3.  FilterIndex – индекс фильтра, используемый по умолчанию;
  4.  InitialDirectory – начальная папка для просмотра;
  5.  FileName – имя выбранного файла (результат выбора).

Ниже показан пример использования диалога OpenFileDialog для считывания данных из выбранного файла:

string input;

OpenFileDialog oFileDlg = new OpenFileDialog();

oFileDlg.InitialDirectory = "c:\\";

oFileDlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

if (oFileDlg.ShowDialog() == DialogResult.OK){

// чтение данных из выбранного файла

StreamReader sr = File.OpenText(oFileDlg.FileName);

input = sr.ReadToEnd();

}

Вид созданной диалоговой формы показан на рис. 8.5.

Кроме перечисленных стандартных диалогов также часто используется простое модальное окно сообщений (message box), которое можно показать на экране с помощью перегруженного метода Show() (12 вариантов метода) статического класса System.Windows.Forms.MessageBox. Как и обычное модальная форма, данное окно сообщений возвращает результат типа DialogResult.

Рис. 8.5. Диалоговое окно открытия файла.

Например, один из методов Show имеет следующую сигнатуру:

DialogResult Show(string, string, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton), где 

  1.  перечисление MessageBoxButtons это комбинации кнопок на форме, таких как Ok, OkCancel, RetryCancel, Yes, No, YesNoCancel, AbortRetryIgnore.
  2.  перечисление MessageBoxIcon это иконка, выводимая в форме, такая как: None (нет), Hand (рука), Question (?), Exclamation (!), Asterisk (*), Stop (крест), Error (крест), Warning (!), Information (i);
  3.  перечисление MessageBoxDefaultButton – номер кнопки, который будет выбран по умолчанию; допустимые значения: Button1, Button2, Button3.

Ниже приведен пример вызова окна сообщений с данным набором параметров:

MessageBox.Show("Продолжать выполнение программы?", "Редактор текста", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,

MessageBoxDefaultButton.Button2);

Результат выполнения данного метода показан на рис. 8.6.

                                   Рис. 8.6. Простое диалоговое окно сообщений.


 

А также другие работы, которые могут Вас заинтересовать

43443. Адаптивная система образования: теория и практика 203.5 KB
  Методологические основания понимания адаптивных систем обучения 1. Проблемы адаптации учащихся к процессу обучения. Развитие адаптации в процессе обучения связано с изучением теоретикометодологических положений отбора учебного содержания в программах и их адекватного воплощения в учебном процессе. К настоящему времени выполнено значительное число исследований посвященных проблеме адаптивной системе обучения А.
43444. Расчет электромагнитных переходных процессов 37.51 MB
  Определим базисные величины Составим схему замещения прямой последовательности Определим параметры схемы замещения прямой последовательности: так как обе линии находятся на одном уровне напряжения то их параметры будут равными Трансформатор здесь т. а Автотрансформатор Нагрузка Асинхронный двигатель Генератор Найдем и для этого свернем схему Составим схему замещения обратной...
43445. Электропривод робота-манипулятора с вертикально-ангулярной кинематической схемой на базе двигателей постоянного тока 790.5 KB
  Перечень вопросов подлежащих разработке и обязательного графического материала: расчет требуемых параметров и выбор электродвигателей постоянного тока для трех степеней подвижности робота; Графические материалы: общий вид манипулятора с обозначением звеньев и степеней подвижности; кинематическая схема манипулятора; расчетные кинематические схемы 1ой 2ой и 3ей степеней подвижности; общий вид 2го звена манипулятора с двигателями 2ой и 3ей степеней подвижности. Мониторинг процесса выполнения курсового проекта № этапа...
43446. Психологическая структура рекламной деятельности 173 KB
  Рекламные сообщения отличаются от обычных информационных тем что они выполняют функцию увещевательного воздействия на человека с целью побудить его приобрести те или иные товары или услуги. Поэтому способность рекламы оказывать воздействие на человека и создавать спрос на товары позволяет использовать ее для воспитания разумных потребностей эстетических вкусов и запросов населения. С другой сочетая свою информативность с убедительностью и внушением оказывает на человека эмоциональнопсихическое воздействие. Она все чаще вмешивается в жизнь...
43447. Экономико-статистический анализ себестоимости молока в ЗАО «Шипицинское» Саргатского района Омской области 695.5 KB
  ЗАО «Шипицинское» находится в Саргатском районе. Саргатский район находится в лесостепной зоне. Климат области типично континентальный. отличается он резкими колебаниями температуры в течение года: сухостью, недостатком осадков, малой облачностью. Основными чертами температурного режима являются: суровая, холодная зима, теплое, но непродолжительное лето, короткие осень и весна, короткий безморозный период, резкие колебания температуры от месяца к месяцу, от одного дня к другому и даже в течение суток.
43448. Методы сортировок 71.5 KB
  Затем нужно подсчитать количество сравнений обменов время работы для каждого случая. Построить таблицу сделать вывод от чего зависит количество обменов сравнений и время работы программы для каждой из сортировок.ЗАДАНИЕ Массив Количество сравнений Количество обменов Время работы Подсчитать количество сравнений обменов время работы для каждого случая.
43449. УСИЛИТЕЛЬ МОЩНОСТИ ЗВУКОВОЙ ЧАСТОТЫ 380 KB
  В данном курсовом проекте стоит задача спроектировать усилитель звуковых сигналов. Так как заданная выходная мощность 6 Вт, то усилитель можно считать маломощным, значит, он не будет использоваться для массовых мероприятий или в студиях. Так как полоса частот от 20 Гц до 20 кГц, то такой усилитель не предполагается использовать для высококачественного усиления стереофонического сигнала.
43450. Алгоритм, вывести путешественников, попавших в лабиринт, к выходу 88.5 KB
  Основной блок программы Из процедуры pint_grph отвечающая за прорисовку всего графа будет представлена только та часть которая ответственна за корректный ход пользователя и включает в себя: отображение ходов непосредственно в копированной матрице _C; запись в массив вершин из которых мы попали первый раз в данную...
43451. Проектирование системы для измерения расхода по методу переменного перепада давления 147.5 KB
  Описание принципа измерения расхода по методу переменного перепада давления Расчет и выбор сужающего устройства Датчики давления серии Метран44ДД Список использованных источников Введение Одним из самых распространенных принципов измерения расхода жидкостей газов и паров является принцип переменного перепада давления на сужающем устройстве.