Перейти на главную страницу
Создание приложений Windows Form в интегрированной среде MS Visual Studio.NET
Ознакомление с технологией создания настольных приложений Windows Form на языке С# в среде разработки MS Visual Studio.NET.
Среда разработки приложений MS Visual Studio.NET является удобной средой для разработки как консольных приложений, так и приложений MS Windows, имеющих стандартный графический интерфейс, известный также как GUI - интерфейс (GUI - Graphic User Interface).
Для того, чтобы создать приложение MS Windows, выберем в среде в меню File следующую последовательность опций: New->Project->C# Projects-> Windows Application, а затем укажем имя приложения в поле Name и его местонахождение в поле Location (рис. 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. Добавление элементов управления MS Windows на форму
После размещения элементов на форме обычно переходят к этапу установки необходимых свойств (Property), то есть настроек каждого элемента на форме и самой формы. Для этого мы выделяем требуемый элемент, нажимаем правую кнопку мышки и выбираете опцию Property. Появляется окно свойств для элемента или формы (рис. 3). В этом окне мы можем сортировать свойства либо по типам, либо по алфавиту, а также задавать или изменять обработчики событий. Необходимо отметить, что у каждого элемента или формы как правило очень много свойств и событий, описание которых обычно предоставляются корпорацией Microsoft в своей документации, причем очень подробно и с примерами.
Самый простой метод для задания обработчиков событий состоит в двойном щелчке на выбранном элементе. В этом случае автоматически создается основной обработчик для такого элемента. Для формы это будет обработчик события Load, а для кнопки Button - обработчик события Click.
Рис. 3. Окно свойств для формы Form1
Предположим, что нам необходимо, чтобы при нажатии на кнопку button1 содержимое поля окна редактирования textbox1 переписывалось в заголовок формы. Для этого мы выполняем двойной щелчок мышкой на кнопке button1, после чего появляется окно редактора текста приложения с пустым обработчиком события click (рис. 4).
Далее мы вводим текст обработчика button1_click(). В данном случае это будет строка
this.Text = textBox1.Text;
Здесь слово this заменяет имя формы Form1, для которой мы устанавливаем значение свойства Text. В это свойство мы переписываем значение свойства Text элемента textBox1.
На рис. 4 показано, как обычно производится ввод этой строки. После ввода слова textBox1 и разделительной точки автоматически появляется список строк с именами методов и свойств, которые имеет объект textBox1. При этом будет выделена наиболее подходящая для вводимого оператора строка, а справа от списка появится описание типа этой строки. По мере ввода имени этот прогноз (попытка угадать вводимое слово) будет продолжаться. И как только система правильно выделит вводимое слово, мы можем нажать Enter для его ввода. Если этот список для выбора вводимых строк исчезнет, для его восстановления нажимаем Ctrl+Space(Пробел).
Рис. 4. Ввод текста обработчика события Click
Для проверки работы обработчика нажимаем F5 для компиляции и выполнения созданного приложения MS Windows.
Чтобы создать обработчик для события, которое не является основным событием элемента или формы, необходимо либо самому его написать в исходном тексте и включить это событие в события, обрабатываемые элементом, либо воспользоваться окном Properties и закладкой (в виде кнопки) Events в нем. В последнем случае мы сначала выделяем элемент на форме или саму форму. Для перехода на закладку Events щелкаем мышкой на желтой кнопке командной панели окна Properties. Затем с помощью стрелок прокрутки находим и выделяем необходимое нам событие. В нижней панели окна Properties появляется описание данного события (рис. 5). Для создания пустого обработчика события и перехода к его редактированию необходимо дважды щелкнуть мышкой на имени события.
Рис. 5. Закладка Events окна Properties
Например, если мы желаем, чтобы вводимый в поле textBox1 текст одновременно копировался в заголовок формы, мы выполняем следующее. Щелкаем мышкой на элементе textBox1, открываем закладку Events окна Properties и выполняем двойной щелчок на имени события TextChanged. После строки обработки данного события обработчик будет следующим:
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
this.Text = textBox1.Text;
В отличие от языка 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();
// 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.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;
}
}
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.ComponentModel.Container components = null;
}
Конструктор класса Form1, сгенерированный мастером приложений, содержит только вызов приватного метода InitializeComponent(), в котором как раз и происходит установка свойств и задание обработчиков событий для компонентов на форме. Это обычно генерируется дизайнером при модификации элементов на форме.
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.1 Ознакомиться с возможностями среды разработки приложений MS Visual Studio .Net при создании приложений MS Windows на примере приложений Ap1 и Translate.
4.2. Создать и отладить приложение, реализующее заданное преподавателем преобразование из одной системы счисления в другую.
Виды преобразований: 10->16, 16->10, 10->8, 8->10.
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. ОФОРМЛЕНИЕ ОТЧЕТА
Отчет должен содержать:
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 с..
Ознакомление с технологией создания настольных приложений Windows Form на языке С# в среде разработки ms visual Studio. Net
18 12 2014
1 стр.
В состав rad studio входят продукты Delphi®, C++Builder®, Delphi Prism™ и Radphp™, предоставляющие все необходимое для быстрого создания Windows-приложений, приложений. Net, php и
11 10 2014
1 стр.
Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications
18 12 2014
1 стр.
Еще лучше воспользоваться редактором, в котором предусмотрена возможность анализа исходных кодов, например, текстовым редактором Microsoft Visual Studio, рассчитанным на работу с M
01 10 2014
1 стр.
Программное создание собственного виртуального робота в Visual Studio для пакета mrds
11 10 2014
1 стр.
По "с нуля" или его модификации. Инструменты разработчика прикладного по net. Compact Framework и Visual Studio. Net позволяют минимизировать изменения по при смене используемых
13 10 2014
1 стр.
Сұраныстарды және олардың өңделген нәтижелерін жіберу Интернет арқылы жүреді. Сұраныстардың нәтижелерін көрсетілуімен, сонымен қатар, клиенттен мәліметтерді қабылдаумен және оларды
25 12 2014
1 стр.
Дается обзор различных web-технологий. Объясняется преимущество asp. Net. Описывается процесс подготовки среды разработки приложений. Создается первая динамическая страница. Вводит
03 09 2014
1 стр.