Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
1.4.2. Приложение WindowsСоздание Windows-приложения Проделаем аналогичную работу: построим Windows-проект, рассмотрим, как он выглядит по умолчанию, а затем дополним его до проекта «Приветствие». Повторяя уже описанные действия, в окне нового проекта (см. рис. 5) выберем тип проекта Windows Application, дав проекту имя WindowsHello.
Рисунок 8. Создание Windows - приложения Как и в консольном случае, по умолчанию строится решение, содержащее единственный проект, содержащий единственное пространство имен (все три конструкции имеют совпадающие имена). В пространство имен вложен единственный класс Form1, но это уже далеко не столь простой класс, как ранее. Вначале приведем его код, а потом уже дам необходимые пояснения: using
System;
Начнем с того, что теперь пространству имен предшествует 6 предложений using; это означает, что используются не менее 6-ти классов, находящихся в разных пространствах имен библиотеки NFCL. Одним из таких используемых классов является класс Form из глубоко вложенного пространства имен System.Windows.Forms. Построенный по умолчанию класс Form1 является наследником класса Form и автоматически наследует его функциональность - свойства, методы, события. При создании объекта этого класса, характеризующего форму, одновременно Visual Studio создает визуальный образ объекта - окно, которое можно заселять элементами управления. В режиме проектирования эти операции можно выполнять вручную, при этом автоматически происходит изменение программного кода класса. Весь код, генерируемый системой, по умолчанию не показывается, так как в его редактировании программистом, как правило, нет необходимости. Он предназначен для инициализации формы и элементов управления, расположенных на ней. Функция Main не отображается, так как она предназначена только для того, чтобы отобразить первую форму проекта.
Основная операция объектно-ориентированных приложений
Основной операцией, инициирующей вычисления в объектно- ориентированных приложениях, является вызов метода F некоторого класса x, имеющий вид: x.F(arg1, arg2, argN); В этом вызове x называется целью вызова, и здесь возможны три ситуации: x - имя класса. В этом случае метод F должен быть статическим методом класса, объявленным с атрибутом static, как это имеет место, например, для точки вызова - процедуры Main; x - имя объекта или объектное выражение. В этом случае F должен быть обычным, не статическим методом. Иногда такой метод называют экземплярным, подчеркивая тот факт, что метод вызывается экземпляром класса - некоторым объектом; x - не указывается при вызове. Такой вызов называется неквалифицированным, в отличие от двух первых случаев. Отметим, неквалифицированный вызов вовсе не означает, что цель вызова отсутствует, - она просто задана по умолчанию. Целью является текущий объект (текущий класс для статических методов). Текущий объект имеет зарезервированное имя this. Применяя это имя, любой неквалифицированный вызов можно превратить в квалифицированный вызов. Иногда без этого имени просто не обойтись.
Выполнение проекта по умолчанию
Давайте посмотрим, что происходит в проекте, создаваемом по умолчанию, когда процедура Main начала работать. Процедура Main содержит всего одну строчку: Application.Run(new Form1()); Прокомментируем этот квалифицированный вызов. Целью здесь является класс Application из пространства имен System.Windows.Forms. Класс вызывает статический метод Run, которому в качестве фактического аргумента передается объектное выражение new Forml (). При вычислении этого выражения создается первый объект - экземпляр класса Forml. Этот объект становится текущим. Для создания объекта вызывается конструктор класса. В процессе работы конструктора осуществляется неквалифицированный вызов метода InitializeComponent(). Целью этого вызова является текущий объект - уже созданный объект класса Forml. Ни в конструкторе, ни в вызванном методе новые объекты не создаются. По завершении работы конструктора объект класса Forml передается методу Run в качестве аргумента. Метод Run класса Application - это знаменитый метод. Во-первых, он открывает форму - видимый образ объекта класса Forml, с которой теперь может работать пользователь. Но главная его работа состоит в том, что он создает настоящее Windows-приложение, запуская цикл обработки сообщений о происходящих событиях. Поступающие сообщения обрабатываются операционной системой согласно очереди и приоритетам, посредством вызовов обработчиков соответствующих событий. Поскольку наша форма по умолчанию не заселена никакими элементами управления, то поступающих сообщений немного. Все, что может делать пользователь с формой, так это перетаскивать ее по экрану, свертывать и изменять размеры. Конечно, он может еще закрыть форму. Это приведет к завершению цикла обработки сообщений, к завершению работы метода Run, к завершению работы метода Main, к завершению работы приложения.
Проект WindowsHello
Давайте расширим приложение по умолчанию до традиционного приветствия в Windows-стиле, добавив окошки для ввода и вывода информации. Как уже говорилось, при создании Windows-приложения по умолчанию создается не только объект класса Form1 - потомка класса Form, но и его видимый образ - форма, с которой можно работать в режиме проектирования, населяя ее элементами управления. Добавим в форму следующие элементы управления. 1. Текстовое окно и метку. По умолчанию они получат имена textBoxl и labell. Текстовое окно предназначается для ввода имени пользователя, метка, визуально связанная с окном, позволит указать назначение текстового окна. Установим свойство Multiline для текстового окна как true, свойство Text у метки - Ваше Имя. 2. Аналогичная пара элементов управления - textBox2 и label2 - предназначены для вывода приветствия. Поскольку окно textBox2 предназначено для вывода, то включим его свойство ReadOnly. 3. Поместим на форму командную кнопку, обработчик события Click которой и будет организовывать чтение имени пользователя из окна textBoxl и вывод приветствия в окно textBox2. На рис. 9 показано, как выглядит наша форма в результате проектирования.
Рисунок 9. Форма «Приветствие» В заключение приведем текст обработчика событий командной кнопки. Как задается обработчик того или иного события для элементов управления? Это можно делать по-разному. Есть стандартный способ включения событий. Достаточно выделить нужный элемент в форме, в окне свойств нажать кнопку событий (со значком молнии) и из списка событий выбрать нужное событие и щелкнуть по нему. В данной ситуации все можно сделать проще – двойной щелчок по кнопке включает событие, и автоматически строится заготовка обработчика события с нужным именем и параметрами. Вот как она выглядит: private
void button1_Click(object sender,System.EventArgs e) {
Нам остается добавить свой текст. Добавим следующие строки: string temp = textBoxl.Text;
И вот как это работает.
Рисунок 10. Форма "Приветствие" в процессе работы
|
1 |
Оглавление
|