Главная
страница 1
Лабораторная работа № 2

Создание приложений Windows Form в интегрированной среде MS Visual Studio.NET



1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

Ознакомление с технологией создания настольных приложений Windows Form на языке С# в среде разработки MS Visual Studio.NET.



2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Среда разработки приложений MS Visual Studio.NET является удобной средой для разработки как консольных приложений, так и приложений MS Windows, имеющих стандартный графический интерфейс, известный также как GUI - интерфейс (GUI - Graphic User Interface).



Создание проекта приложения Windows Form

Для того, чтобы создать приложение MS Windows, выберем в среде в меню File следующую последовательность опций: New->Project->C# Projects-> Windows Application, а затем укажем имя приложения в поле Name и его местонахождение в поле Location (рис. 1).



1

Рис. 1. Окно New Project среды разработки приложений

По завершении работы мастера приложений в главное окно среды разработки загрузится программа Microsoft Visual C#.Net, представляющая собой среду разработки приложений MS Windows на языке С#. В рабочей области главного окна появится окно дизайнера форм с пустой формой Form1, а также окно Solution Explorer, показывающее состав созданного проекта.

Для добавления элементов на форму откроем панель ToolBox с набором инструментов. Для этого либо используем опцию ToolBox в меню View, либо перемещаем указатель мыши на иконку ToolBox, если эта панель уже имеется в минимизированном виде (см. рис. 1). Эта панель состоит из закладок, в которых находятся палитры компонентов (рис.2).

Выберем закладку Windows Forms в окне ToolBox и с помощью стрелок прокрутки найдем элементы управления TextBox (редктор текста) и Button (командная кнопка). Для переноса каждой из этих элементов на форму достаточно выполнить двойной щелчок мышкой на имени элемента в окне ToolBox. После этого мы размещаем элементы на форме.

2

Рис. 2. Добавление элементов управления MS Windows на форму

После размещения элементов на форме обычно переходят к этапу установки необходимых свойств (Property), то есть настроек каждого элемента на форме и самой формы. Для этого мы выделяем требуемый элемент, нажимаем правую кнопку мышки и выбираете опцию Property. Появляется окно свойств для элемента или формы (рис. 3). В этом окне мы можем сортировать свойства либо по типам, либо по алфавиту, а также задавать или изменять обработчики событий. Необходимо отметить, что у каждого элемента или формы как правило очень много свойств и событий, описание которых обычно предоставляются корпорацией Microsoft в своей документации, причем очень подробно и с примерами.

Самый простой метод для задания обработчиков событий состоит в двойном щелчке на выбранном элементе. В этом случае автоматически создается основной обработчик для такого элемента. Для формы это будет обработчик события Load, а для кнопки Button - обработчик события Click.



4

Рис. 3. Окно свойств для формы Form1

Предположим, что нам необходимо, чтобы при нажатии на кнопку button1 содержимое поля окна редактирования textbox1 переписывалось в заголовок формы. Для этого мы выполняем двойной щелчок мышкой на кнопке button1, после чего появляется окно редактора текста приложения с пустым обработчиком события click (рис. 4).

Далее мы вводим текст обработчика button1_click(). В данном случае это будет строка

this.Text = textBox1.Text;

Здесь слово this заменяет имя формы Form1, для которой мы устанавливаем значение свойства Text. В это свойство мы переписываем значение свойства Text элемента textBox1.

На рис. 4 показано, как обычно производится ввод этой строки. После ввода слова textBox1 и разделительной точки автоматически появляется список строк с именами методов и свойств, которые имеет объект textBox1. При этом будет выделена наиболее подходящая для вводимого оператора строка, а справа от списка появится описание типа этой строки. По мере ввода имени этот прогноз (попытка угадать вводимое слово) будет продолжаться. И как только система правильно выделит вводимое слово, мы можем нажать Enter для его ввода. Если этот список для выбора вводимых строк исчезнет, для его восстановления нажимаем Ctrl+Space(Пробел).

3

Рис. 4. Ввод текста обработчика события Click

Для проверки работы обработчика нажимаем F5 для компиляции и выполнения созданного приложения MS Windows.

Чтобы создать обработчик для события, которое не является основным событием элемента или формы, необходимо либо самому его написать в исходном тексте и включить это событие в события, обрабатываемые элементом, либо воспользоваться окном Properties и закладкой (в виде кнопки) Events в нем. В последнем случае мы сначала выделяем элемент на форме или саму форму. Для перехода на закладку Events щелкаем мышкой на желтой кнопке командной панели окна Properties. Затем с помощью стрелок прокрутки находим и выделяем необходимое нам событие. В нижней панели окна Properties появляется описание данного события (рис. 5). Для создания пустого обработчика события и перехода к его редактированию необходимо дважды щелкнуть мышкой на имени события.



5

Рис. 5. Закладка Events окна Properties

Например, если мы желаем, чтобы вводимый в поле textBox1 текст одновременно копировался в заголовок формы, мы выполняем следующее. Щелкаем мышкой на элементе textBox1, открываем закладку Events окна Properties и выполняем двойной щелчок на имени события TextChanged. После строки обработки данного события обработчик будет следующим:

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

{

this.Text = textBox1.Text;



}

Приложение MS Windows на языке C#

В отличие от языка C++, приложения на котором состоят из файлов с расширениями .h и .cpp, а также файлов ресурсов, в приложении на языке C# эти три вида файлов объединены в один файл с расширением .cs. Включение описания ресурсов в основной текст программы делает ее достаточно громоздкой, однако дает возможность наряду с использованием дизайнера для автоматической настройки параметров ресурсов (элементов управления и самой формы) выполнять и ручную, более тонкую настройку. Рассмотрим в качестве примера файл Form1.cs, созданный средой разработки приложений для формы с элементами управления textBox1 и button1:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace Ap1

{

public class Form1 : System.Windows.Forms.Form



{

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.Button button1;

private System.ComponentModel.Container components = null;

public Form1()

{

InitializeComponent();



// TODO: Add any constructor code after

// InitializeComponent call

//

}

protected override void Dispose( bool disposing )



{

if( disposing )

{ if (components != null)

{ components.Dispose(); }

}

base.Dispose( disposing );



}

#region Windows Form Designer generated code

///

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///

private void InitializeComponent()

{

this.textBox1 = new System.Windows.Forms.TextBox();



this.button1 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// textBox1



//

this.textBox1.Location =

new System.Drawing.Point(24, 40);

this.textBox1.Name = "textBox1";

this.textBox1.TabIndex = 0;

this.textBox1.Text = "textBox1";

this.textBox1.TextChanged +=

new System.EventHandler(this.textBox1_TextChanged);

//

// button1



//

this.button1.Location =

new System.Drawing.Point(32, 104);

this.button1.Name = "button1";

this.button1.TabIndex = 1;

this.button1.Text = "button1";

this.button1.Click +=

new System.EventHandler(this.button1_Click);

//

// Form1



//

this.AutoScaleBaseSize =

new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 273);

this.Controls.AddRange(

new System.Windows.Forms.Control[] { this.button1, this.textBox1});

this.Name = "Form1";

this.Text = "Form1";

this.Load +=

new System.EventHandler(this.Form1_Load);

this.ResumeLayout(false);

}

#endregion



///

/// The main entry point for the application.

///

[STAThread]

static void Main()

{

Application.Run(new Form1());



}

private void button1_Click(object sender,

System.EventArgs e)

{

this.Text = textBox1.Text;



}

}

}



В самом начале программы находится описание класса Form1 как производного от класса Form. При этом в качестве полей-данных класса объявляются (автоматически включаются в описание класса дизайнером формы) те компоненты, которые мы разместили на форме:

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.TextBox textBox1;



private System.Windows.Forms.Button button1;

private System.ComponentModel.Container components = null;

}

Конструктор класса Form1, сгенерированный мастером приложений, содержит только вызов приватного метода InitializeComponent(), в котором как раз и происходит установка свойств и задание обработчиков событий для компонентов на форме. Это обычно генерируется дизайнером при модификации элементов на форме.



Первыми строками в InitializeComponents() являются следующие:

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.Button button1;

private System.ComponentModel.Container components = null;

Они просто создают экземпляры классов для элементов управления и присваивают их переменным класса формы. Отметим, что все они содержатся в пространстве имен System.Windows.Forms. Чтобы получить информацию о таких классах, необходимо обратиться к электронной документации по .NET.

Далее следует вызов метода SuspendLayout() для нашей формы, что означает запретить перерисовку, так как далее будет следовать настройка элементов формы. Соответственно, как только настройка заканчивается, вызывается метод ResumeLayout(), который фактически вызывает перерисовку всей формы, а она в свою очередь вызывает перерисовку всех визуальных компонентов.

Давайте на примере компонента Button рассмотрим, как устанавливаются свойства и события:

this.button1.Location = new System.Drawing.Point(32, 104);

this.button1.Name = "button1";

this.button1.TabIndex = 1;

this.button1.Text = "button1";

this.button1.Click += new System.EventHandler(this.button1_Click);

В первой строке задается установка местоположения компонета (элемента управления) на форме – позиция левого верхнего угла прямоугольной области элемента. Далее определяется имя компонента (button1, если мы не изменяли свойство Text в окне Properties) и порядок установки фокуса на элемент управления при нажатиях на кнопку Tab.

В последней строке задается обработчик события Click, определенного как поле объекта button1. С помощью new System.EventHandler(this…) создается делегат (фактически, указатель на метод) EventHandler, которому в качестве параметра передается имя метода – обработчика события. Причем обработчик события не является единственным для компоненты, при добавлении обработчика через += мы просто помещаем наш обработчик в цепочку обработчиков данного события для компоненты. А это означает, что одно событие могут и будут обрабатывать произвольное количество обработчиков. Если мы не задаем свой обработчик, то в цепочке обработчиков по умолчанию находится единственный обработчик, изначально заданный в самой компоненте.

Как вы могли заметить, все автоматически генерируемые строки используют модификатор this. Это для того, чтобы дизайнер был полностью уверен в том, что он устанавливает свойства и события именно для компонентов, которые принадлежат именно этой форме. Обычно это излишне, однако сразу видно, что это автоматически сгенерированные строки.

Таким образом, мы устанавливаем необходимые нам свойства для всех компонентов формы. Самый последний шаг в InitializeComponents() – это задание свойств и обработчиков событий для самой формы. Вот какие свойства мы установили для формы в нашем приложении:

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 273);

this.Controls.AddRange( new System.Windows.Forms.Control[] {

this.button1, this.textBox1} );

this.Name = "Form1";

this.Text = "Form1";

В этих строках устанавливаются размер клиентской области для формы, задается имя формы и ее заголовок. С помощью метода AddRange() форме передается список всех компонент, которые на ней находятся.

На этом инициализация заканчивается, форма прорисовывается и попадает в цикл приема и обработки событий. Создание формы и запуск цикла обработки событий производится в методе Main() следующим образом:

Application.Run(new Form1());

3. ОБОРУДОВАНИЕ

Персональный IBM PC/AT/ATX – совместимый компьютер с процессором не ниже Pentium 133 и имеющий не менее 64 МБ оперативной памяти, операционная система MS Windows NT/2000/XP, интегрированная среда разработки приложений MS Visual Studio.Net 2003/2005 и платформа .NET Framework, каталог Lab2, содержащий файл Labtp2.doc (методические указания к данной лабораторной работе), подкаталоги Ap1 и Translate с файлами приложений Ap1 и Translate на языке C#, не менее 100 Mб свободной памяти на логическом диске, содержащем каталог Lab2.



4. ЗАДАНИЕ НА РАБОТУ

4.1 Ознакомиться с возможностями среды разработки приложений MS Visual Studio .Net при создании приложений MS Windows на примере приложений Ap1 и Translate.

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

Виды преобразований: 10->16, 16->10, 10->8, 8->10.



5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

5.1. Получить у преподавателя номер варианта задания (номера 1 - 4).

5.2. Проверить наличие 100 Мб свободной памяти на логическом диске, содержащем каталог Lab2, наличие файла Labtp2.doc и подкаталогов Ap1 и Translate в каталоге Lab2.

5.3. Запустить выполнение файла Ap1.exe из каталога Lab2\Ap1\Bin\Debug и проверить его работу.

5.4. Запустить выполнение среды разработки приложений MS Visual Studio .Net и посредством выбора опций File->Open->Project открыть проект Ap1 из каталога Oop\Lab6\Ap1. Ознакомиться с возможностями дизайнера форм при изменении свойств компонентов и формы приложения MS Windows. Перекомпилировать проект и проверить работу приложения.

5.5. Закрыть приложение Ap1 и посредством выбора опций File->New->Project создать проект ApwX (Х - номер варианта задания), реализующий функциональность приложения Ap1. Перекомпилировать проект и проверить работу приложения.

5.6. Запустить выполнение файла Client.exe из каталога Lab2\Translate\Client\Bin\Debug и проверить его работу.

5.7. В среде разработки приложений MS Visual Studio.Net посредством выбора опций File->Open->Project открыть проект Client из каталога Lab2\Translate\Client. Ознакомиться с реализацией классов и методов приложения. Перекомпилировать проект и проверить работу приложения. Запустить отладчик и проверить его основные функциональные возможности при отладке приложения MS Windows.

5.8. Закрыть приложение Client и посредством выбора опций File->New->Project создать проект ProgwX (Х - номер варианта задания), реализующий заданный преподавателем вариант преобразования из одной системы счисления в другую. Перекомпилировать проект и проверить работу приложения. Продемонстрировать преподавателю работу приложения, а также использование отладочных возможностей среды разработки приложений.

6. ОФОРМЛЕНИЕ ОТЧЕТА

Отчет должен содержать:



  • цель и задачи выполнения работы;

  • тексты обработчиков событий и метода Translate приложения Translate;

  • текст файла приложения, реализующего заданный преподавателем вариант преобразования из одной системы счисления в другую;

  • краткое описание, выводы.

7. КОНТРОЛЬНЫЕ ВОПРОСЫ

7.1. Перечислите типы значений и типы ссылок языка C#.

7.2. Как используется тип object в языке C#?

7.3. Какие команды меню генерируют кнопки панели инструментов главного окна среды разработки?

7.4. Перечислите основные акселераторы среды разработки?

7.5. Какие виды окон используются разработчиком приложения?

7.6. Какие закладки имеются в окне Toolbox?

7.7. Какими способами можно создать обработчик события?

7.8. Какие операции и методы класса string вы знаете?

7.9. Какие виды параметров имеются у методов в языке C#?

7.10. Как объявляется событие на языке C#? Приведите примеры.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Вилле К. Представляем C#. - М.: ДМК - Пресс, 2001. - 192 с.

2. Гарнаев А. Самоучитель Visual Studio .Net 2003. – СПб.: БХВ-Петербург, 2003. – 688 с.

3. Петзолд Ч. Программирование с использованием Microsoft Windows Forms. Мастер-класс / Пер. с англ. - М.: Русская редакция; СПб. : Питер, 2006. – 432 с..



4. MSDN 2005. Электронная документация Microsoft для разработчиков программного обеспечения. – 200000 с.


Смотрите также:
Лабораторная работа №2 Создание приложений Windows Form в интегрированной среде ms visual Studio. Net
119.12kb.
1 стр.
Лабораторная работа №5 Использование Web сервисов xml в консольных приложениях и приложениях Windows Forms цель и задачи работы
284.97kb.
1 стр.
Технологии проектирования программного обеспечения для ос windows (Windows Form, asp. Net, Web-сервисы xml) пояснительная записка к курсовой работе по дисциплине: «Операционные среды»
247.57kb.
1 стр.
Лабораторная работа №1 Конфигурирование Visual Studio Цель работы: изучение оболочки Visual Studio. Порядок выполнения работы
47.09kb.
1 стр.
Общие вопросы Что такое Embarcadero rad studio xe?
107.88kb.
1 стр.
Лабораторная работа Миграция приложений asp. Net на Windows Azure Содержание Упражнение 1: перенос веб-приложения в облако 3
596.27kb.
4 стр.
Лабораторная работа n 4 Прикладные, сетевые и распределенные среды ос
44.4kb.
1 стр.
Лабораторная работа Введение в разработку Winrt-приложений на html/JavaScript
473.51kb.
4 стр.
Б. Нойес Привязка данных в Windows Forms Книга охватывает все аспекты привязки данных в Windows Forms. Описываются средства, обеспечивающие связь с базой данных, такие, как типизированные наборы данных и адапт
69.76kb.
1 стр.
Лабораторная работа №1 «Создание бд в среде ms access»
144.98kb.
1 стр.
Методические указания и лабораторные задания по курсу основы информатики и
933.18kb.
11 стр.
Лабораторная работа Введение в разработку приложений SharePoint 2013 и Office 2013 с помощью технологии napa
273.99kb.
1 стр.