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

Создание формы в ручном режиме

Одним из этапов разработки программ для операционной системы Windows является разработка интерфейса с использованием стандартных элементов управления ( окна, кнопки, поля, панели, движки, списки и т. п.), которые объединены в так называемый GUI (Graphic User Interface – графический интерфейс пользователя).

Пространство имен System. Windows. Forms содержит классы для создания приложений, использующих многочисленные возможности графического пользовательского интерфейса, доступного в операционной системе Windows Microsoft. Типы, общее количество которых более ста, можно разделить на следующие группы:

Базовые инфраструктурные типы, обеспечивающие основополагающие операции. Это, прежде всего, Application и Form, а также типы, обеспечивающие совместимость с ранее разработанными элементами управления (например, с ActiveX);

Элементы управления – типы, предназначенные для разработки пользовательского интерфейса (Button, Menu, и т. п.), которые являются производными от системного класса Control;

Компоненты – типы, не являющиеся производными от системного класса Control, не имеющие визуального представления во время выполнения приложения, но видимые в режиме проектирования интерфейса (Timer, ErrorProvider, ToolTip и др.);

Диалоговые окна общего вида (OpenDialog, PrintDialog и др).

Как следует из перечисления, особое значение имеют классы Applicationи Form. Объект класса Application (объявленный, как public sealed) автоматически создается системой при запуске программы на выполнение и содержит элементы, при помощи которых организуется управление windows – программой (приложением) в целом. Предоставляемые этим классом свойства и методы являются статическими. По назначению можно классифицировать их следующим образом: методы для запуска и остановки приложения и потоков в рамках приложения; методы для обработки сообщений Windows; свойства для получения сведений о приложении.

При этом такие свойства, как имя программы, имя компании, язык интерфейса (локализация), номер версии программы, путь и имя файла программы и др. при компиляции формируют метаданные сборки. Методом класса Application, без которого просто невозможно обойтись, является метод Run — он запускает цикл обработки сообщений приложения и, возможно, делает форму видимой. Методы Exit и ExitThread, соответственно, завершают работу приложения или потока. Метод DoEvents позволяет активизировать обработку сообщений (всех, которые есть в данный момент в очереди) и может быть запущен, практически, из любого места программного кода.

Кроме методов и свойств, класс Application содержит события, наиболее известными из которых являются Iddle (бездействие), ApplicationExit (завершение приложение) и ThreadExit (завершение потока).

Класс Form, в свою очередь, создает главное окно приложения стандартной функциональности, которое служит «фундаментом» для размещения остальных элементов управления. Форм в приложении может быть несколько, при необходимости можно добавлять и удалять их.

Наиболее используемые классы пространства System. Windows. Forms обобщённо представлены в следующей таблице сгруппированными (условно) по категориям : классы System. Windows. Forms

Обычной практикой разработки интерфейса является использование стандартного шаблона и конструктора формы. В то же время, классы формы и стандартных элементов управления можно использовать, как обычные классы – вручную объявляя объекты и используя их функциональность. На этапе начального знакомства с GUI именно эта технология даёт более простые и понятные решения. Автоматизация, предлагаемая средой Visual Studio для создания оконных приложений, будет использована, начиная со второй работы данного лабораторного цикла.

Создание пустой формы

ЗАДАНИЕ 1. Создайте проект «Ручная форма». Для этого необходимо:6 выполнить команду File –> New Project, на закладке стандартных шаблонов выбрать Empty Project, назначить ему имя («Ручная форма»).

В окне Solution Explorer для текущего проекта (Ручная форма) добавить ссылки (команда Add Reference контекстного меню на узле References) на компоненты System и System. Widows. Forms; в окне редактирования (файл Ручная форма. cs) набрать текст using System. Windows. Forms; using System. Threading; class ПерваяПрограмма

{ static void Main()// первый вариант

{

Form Форма;

Форма = new Form();

Форма. Show();

Thread. Sleep(3000);

}

}

Запустить на выполнение. В результате на экране появляется окно со всеми стандартными элементами.

Примечание. Статический метод Sleep класса Thread приостанавливает поток выполнения на время в милисекундах, указанное в качестве его входного аргумента. Опишите в отчёте работу первого варианта полученного приложения, а затем модифицируйте его по образцу (следующий листинг) и снова проверьте в работе:7 using System. Windows. Forms; class ПерваяПрограмма

{ static void Main()// второй вариант

{

Form Форма;

Форма = new Form();

Application. Run(Форма);

}

}

Краткие пояснения:

1. Метод Run() запускает очередь сообщений для данного приложения.

2. Для того, чтобы исключить появление пустого консольного окна, в меню

Project на закладке Application в списке Output type выберите Windows

Application.

Письменно (в отчёте):

1. В чем отличия в функционировании между первым и вторым вариантами первой программы, чем обусловлены эти отличия?

2. Объясните назначение каждой строки Main — методов в первом и втором варианте;

3. Перечислите действия, которые «умеет» выполнять получившееся окно во втором варианте.

Работа с классом Application

В предыдущем варианте приложения запуском метода Run управление из метода Main передаётся форме и возвращается назад только после закрытия окна. Поэтому при необходимости каких-либо действий программный код должен быть размещен, соответственно, до вызова метода Run.

ЗАДАНИЕ 2. Получение пути и имени запущенного приложение с использованием класса Application.

Для этого необходимо выполнить модификацию файла Ручная форма. cs в соответствии с листингом: using System. Windows. Forms; class ПерваяПрограмма

{ static void Main()

{

Form Форма;

Форма = new Form(); string path = Application. StartupPath;

MessageBox. Show(path, «Запускается приложение:»);

Application. Run(Форма);

}

}

Сделайте вывод (в отчёте), как изменяется строка в окне MessageBox в зависимости от режима запуска приложения. Краткие сведения по MessageBox содержит

Форма с текстовой надписью

Для более действенного использования класса Form необходимо создать «свой» класс формы (производный от Form) и дополнить его необходимыми элементами: using System. Windows. Forms; class Form1 : Form

{ static void Main()

{

Form1 Форма;

Форма = new Form1();

Форма. Text = «Ручная форма»;

Label Надпись = new Label();

Надпись. Text = «Надпись»;

Форма. Controls. Add(Надпись);//Добавление надписи

Application. Run(Форма);

}

}

ЗАДАНИЕ 3. Модифицируйте в соответствии с предшествующим листингом файл Ручная форма. cs. После запуска на выполнение полученного варианта программы форма должна иметь вид, соответствующий следующему:

Пояснение. Класс формы, как и большинство других контейнерных классов

System. Windows. Forms, имеет get — свойство Controls, с помощью которого осуществляется работа с коллекцией – набором элементов управления формы, в частности, метод Add() добавляет, а Remove() удаляет конкретный элемент управления.

При необходимости можно несколько улучшить внешний вид окна (для наглядности фон Надписи установлен в белый цвет) : using System. Drawing;// Для класса Color using System. Windows. Forms; class Form1 : Form

{ static void Main()

{

Form1 Форма;

Форма = new Form1();

Форма. Text = «Ручная форма»;

Label Надпись = new Label();

Надпись. Text = «Надпись»;

Надпись. Left = 50;

Надпись. Top = 50;

Надпись. Width = 100;

Надпись. Height = 40;

Надпись. BackColor = Color. White;

Форма. Controls. Add(Надпись);

Application. Run(Форма);

}

}9

Пояснение. Используемый в листинге класс Color объявлен в пространстве имён System. Drawing и инкапсулирует набор цветов, определённых в системе

(get – свойства).

ЗАДАНИЕ 4 «Ручной» коррекцией соответствующих свойств Формы или Надписи добейтесь размещения надписи при старте программы (по указанию преподавателя) : a)в нижнем левом углу окна; b)в нижнем правом углу окна; c)в нижнем левом углу окна; d)внизу окна посередине; e)в верхнем левом углу окна; f)в верхнем правом углу окна; g)в верхнем левом углу окна; h)вверху окна посередине;

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

ЗАДАНИЕ 5. Организация диалога с помощью MessageBox.

Измените код, для того, чтобы надпись на форме содержала традиционное приветствие, а затем выполните один из вариантов (по указанию преподавателя):

1)- выбор языка приветствия (русское /английское);

2)- выбор варианта приветствия (русское краткое/развёрнутое);

3)- выбор начертания приветствия (русские большие/малые буквы);

4)- выбор начертания приветствия (английские большие/малые буквы);

5)- отмена появления формы;

6)- подтверждение завершения работы;

ЗАДАНИЕ 6. Добавление на форму кнопки

Цель данного этапа – вручную добавить на форму кнопку, реагирующую на нажатие. Реакцией на нажатие будет изменение видимости надписи («Здравствуй Мир!») и смена подписи на самой кнопке («Показать»/«Скрыть»).

Первое, что потребуется сделать – это изменить класс Form1:

Добавить два поля ссылочного типа (на кнопку и надпись);

Добавить конструктор, в котором собраны действия по настройке формы и элементов управления. Также в класс необходимо добавить обработчик события — нажатия на кнопку.10

Затем для объекта – Кнопка к общедоступному событию Click добавляется делегат и наполняется конкретной функциональностью метод – обработчик.

Листинг с перечисленными изменениями представлен ниже : using System; using System. Drawing; using System. Windows. Forms; public class Form1 : Form

{

Label Надпись;

Button Кнопка; public Form1()

{ Text = «Ручная форма»;

Надпись = new Label();

Надпись. Text = » Здравствуй, Мир!»;

Надпись. Top = 50;

Надпись. Width = 200;

Кнопка = new Button();

Кнопка. Text = «Скрыть»;

Кнопка. Width = 100;

Кнопка. Click += new System. EventHandler(Кнопка_Click);

Controls. Add(Кнопка);

Controls. Add(Надпись);

} static void Main()

{ Form1 Форма;

Форма = new Form1();

Application. Run(Форма);

} private void Кнопка_Click(object sender, System. EventArgs e)

{ if ( Кнопка. Text == «Показать»)

{ Кнопка. Text = «Скрыть»;

Надпись. Show();

} else { Кнопка. Text = «Показать»;

Надпись. Hide();

}

}

}

Измените содержимое исходного файла в соответствии с образцом. Запустите на выполнение, при необходимости настройте размещение элементов. В отчёте воспроизведи


Карта сайта


Информационный сайт Webavtocat.ru