Основы программирования на C#. Windows-приложение

 













Лабораторная работа

Основы программирования на C#. Windows?приложение


Любое окно приложения для Windows , представляет собой форму, порожденную от класса System.Windows.Forms.Form.

Откроем новый проект - проект Windows Application. Проект создается по аналогии с Console Appliation. Перед нами появится пустая поверхность окна приложения - форма. Размер, местоположение, цвет фона, имя заголовка и другие свойства формы можно изменять с помощью окна свойств - Properties (отображение свойств выбранного элемента и событий, связанных с ним).

Панель Properties содержит следующие разделы свойств:

Accessibility ? достижимость

Appearance ? вид

Behavior ? поведение

Configurations ? конфигурации

Data ? данные

Design ? проект

Focus ? центр

Layout ? размещение

Window style ? стиль окна

Используя раздел свойств Accessibility можно изменять:

·цвет поверхности - BackColor (по умолчанию такого же цвета будут все элементы управления);

·фоновую картинку ? BackgroundImage,

·вид курсора ? Cursor,

·цвет шрифта ? ForeColor,

·стиль окна ? FormBorderStyle,

·текст заголовка формы ? Text ,

·местоположение текста заголовка формы ? RightToLeft

Используя раздел свойств Layout можно изменять:

·размер окна ? Size

·параметр, определяющий начальную позицию ? StartPosition,

·координаты левого верхнего угла формы ? Location (актуален, если StartPosition = Manual),

·вид начального отображения формы (минимизированное, нормальное или максимизированное) ? WindowState,

·размер формы в максимизированном состоянии ? MaxsimumSize,

·размер формы в минимизированном состоянии ? MinimumSize,

Используя раздел свойств Window style можно изменять:

·вид иконки ? Icon

·доступность кнопки максимизации ?MaximizeBox

·доступность кнопок минимизации ? MinimizeBox

и т.д.

Легко заметить, что мы можем изменять размеры формы не только с помощью панели свойства (Properties), но и с помощью мыши, при этом размеры (Size) будут меняться автоматически.

Поэкспериментируйте с этими и другими свойствами, посмотрите изменения на форме, связанные с изменением свойств.

Так же можно увидеть панели:

·Server Explorer (подключение к проекту БД),

·Solution Explorer (отображение подключенных проектов, файлов, пространств имен и т.п.),

·Dynamic Help (отображение справочной информации),

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

Добавить дополнительные панели можно через пункт меню "View".

Теперь, когда вы более или менее усвоили свойства (Properties), связанные с формой, можно рассмотреть события. На той же панели свойств есть кнопка с пиктограммой "молния". Щелкнем на ней. При этом отобразятся различные события, связанные:

·с мышью (движение, движение в определенных направлениях, вход или выход из определенной области, нажатиями клавиши мыши),

·с нажатием клавиши клавиатуры,

·с рисованием,

·с изменением стиля,

·с размером окна, и многие другие (подробнее с теми или иными событиями можно ознакомиться самостоятельно, используя источники с более глубокой детализацией материала).

Чтобы задействовать то или иное событие достаточно лишь дважды щелкнуть на его названии и компилятор автоматически создаст имя и тело метода, который будет обрабатывать выбранной событие. Так же можно ввести самостоятельно имя метода и сметить фокус от выбранного события - тело метода создастся автоматически с введенным именем! Существует еще и третий способ: сначала создается метод обрабатывающий событие, а затем выбирается в выпадающем списке! В тело метода необходимо поместить все, что необходимо для обработки события.

Чтобы показать, как все это работает, создадим простенькое приложение ? калькулятор для сложения двух чисел.

Для этого, во-первых, удаляем все "набросанные" на поверхность формы элементы управления, поверхность ? должна быть пустой.

приложение windows application properties калькулятор

Во-вторых, "выкладываем" (перетаскиваем) из Toolbox на форму два Textbox, пять Label и одну Button. Изменив имена Label на - "A", "B", "+","=" и "Сумма" добиваемся, чтобы это выглядело примерно как на рисунке.

Затем, для удобства изменим имена (не текст!) Textbox и Button. Первому Textbox присваиваем имя "А", второму - "В",третьему - "С", а Button - "Calculate". Все это делается, если Вы еще не забыли, в панели свойств (не забывайте при этом выделить нужный элемент!). Теперь нам нужно добавить обработку лишь одного события - нажатие кнопки. Это можно сделать всеми перечисленными выше способами или просто двойным щелчком по кнопке. И сразу же автоматически появляется код приложения с телом метода, обрабатывающего событие нажатия кнопки.

Пояснение. При двойном щелчке по любому элементу управления автоматически создается метод по обработке того или иного события, но(!!!) создается всегда, то событие обработка, которого более характерна для данного элемента управления. Для кнопки - нажатие на кнопку, для формы - загрузка и т.п.

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


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

{a, b;/*Обработка исключений, здесь выделяется блок кода, в котором могут возникнуть исключения (ошибки)*/

{=Convert.ToDouble(A.Text);/*Считываем текст (A.Text),

затем конвертируем его в формат double*/=Convert.ToDouble(B.Text);/*Считываем текст (B.Text),

затем конвертируем его в формат double*/.Text=Convert.ToString(a+b);/*Присваиваем тексту третьего редактора (С.Text) конвертированную в строковый формат сумму чисел(a+b)полученных из двух редакторов*/

}//Обработка исключений - произошла ошибка

{.Show("Проверьте правильность ввода чисел!");

}

}


Скомпилируем приложение. Если все-таки что-то не работает, проверьте, все ли вы сделали правильно! Свертись с полным листингом приложения.

Добавим в наше приложение событие нажатия кнопки мыши.

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


private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)

{p;//Объявляем пероg=CreateGraphics();

/*Это нужно для того, чтобы на поверхность выводился рисунок */clr = new Color();/* создается объект типа Color для хранения цвета*/R2,r2,k=1,=200;//максимальный радиус шара

int x,y;red=20,gre=250,blu=150;

/* Запоминаем цвет в формате RGB*/

clr=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));=Color.FromArgb((int)200,(int)0,(int)0);=new Pen(clr);//Создаем перо.DrawRectangle(p,30,180,100,20);//Рисуем прямоугольник=System.Drawing.Pens.Fuchsia;/*Выбираем цвет фуксин из библиотеки цветов*/

g.DrawLine(p,30,254,68,275);//Рисуем прямую линию=R*R;

/*Здесь рисуем шарик окружностями

* увеличивая его радиус и меняя цвет каждой окружности*/

for(y=0;y<=R;y++)(x=0;x<=y;x++)

{=(float)2*x*x;(r2>R2) break;=1-r2/R2;=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));=new Pen(clr);.DrawEllipse(p,(float)(250-0.5*x),(float)(250-0.5*x),(float)x,(float)x);/* Именно здесь происходит вывод окружностей на поверхность*/

}

}


Скомпилируем приложение. Проанализируем листинг, сформированный транслятором (см. приложение).


Задания


). Создать приложение, в котором вводятся координаты окружности и меняются по нажатию кнопки.

). Создать приложение, в котором движется окружность, по нажатию одной кнопки он останавливается, по нажатию второй кнопки считывается значения красной, зеленой и синей компонент из трех Textbox-ов и изменяется цвет окружности.

). Создать приложение с тремя кнопками, в котором вводятся четыре переменные x, y, z, w, а затем по нажатию первой кнопки рисуется линия, второй ? прямоугольник, а третьей ? эллипс. Параметры геометрических фигур определяются x, y, z и w.

). Создать приложение, в котором при нажатии одной копки окружность начинает двигать/останавливаться, по нажатию другой - радиус окружности начинает увеличивать (до определенного момента), затем уменьшаться (до определенного момента), после повторного нажатия кнопки изменение радиуса прекращается.

). Создать приложение, в котором окружность движется в том же направлении что и мышь.

). Создать приложение, в котором направление движения окружности задается нажатием клавиш (стрелок) клавиатуры).


Приложение


Листинг, сформированный транслятором в процессе выполнения работы

System;System.Drawing;System.Collections;System.ComponentModel;System.Windows.Forms;System.Data;WindowsApplication4

{

/// <summary>

/// Summary description for Form1.

/// </summary>class Form1 : System.Windows.Forms.Form

{System.Windows.Forms.Label label1;System.Windows.Forms.Label label2;System.Windows.Forms.Label label3;System.Windows.Forms.Label label4;System.Windows.Forms.Label label5;System.Windows.Forms.TextBox A;System.Windows.Forms.TextBox B;System.Windows.Forms.Button Calculate;System.Windows.Forms.TextBox C;

/// <summary>

/// Required designer variable.

/// </summary>System.ComponentModel.Container components = null;Form1()

{

//

// Required for Windows Form Designer support

//();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

/// <summary>

/// Clean up any resources being used.

/// </summary>override void Dispose( bool disposing )

{( disposing )

{(components != null)

{.Dispose();

}

}.Dispose( disposing );

}

#region Windows Form Designer generated code

/// <summary>

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

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

/// </summary>void InitializeComponent()

{.A = new System.Windows.Forms.TextBox();.B = new System.Windows.Forms.TextBox();.label1 = new System.Windows.Forms.Label();.label2 = new System.Windows.Forms.Label();.label3 = new System.Windows.Forms.Label();.C = new System.Windows.Forms.TextBox();.label4 = new System.Windows.Forms.Label();.label5 = new System.Windows.Forms.Label();.Calculate = new System.Windows.Forms.Button();.SuspendLayout();

//

// A

//.A.Location = new System.Drawing.Point(16, 56);.A.Name = "A";.A.Size = new System.Drawing.Size(64, 20);.A.TabIndex = 0;.A.Text = "1";

//

// B

//.B.Location = new System.Drawing.Point(120, 56);.B.Name = "B";.B.Size = new System.Drawing.Size(72, 20);.B.TabIndex = 1;.B.Text = "";

//

// label1

//.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));.label1.Location = new System.Drawing.Point(40, 32);.label1.Name = "label1";.label1.Size = new System.Drawing.Size(16, 16);.label1.TabIndex = 2;.label1.Text = "A";

//

// label2

//.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));.label2.Location = new System.Drawing.Point(88, 56);.label2.Name = "label2";.label2.Size = new System.Drawing.Size(16, 23);.label2.TabIndex = 3;.label2.Text = "+";

//

// label3

//.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));.label3.Location = new System.Drawing.Point(144, 32);.label3.Name = "label3";.label3.Size = new System.Drawing.Size(16, 24);.label3.TabIndex = 4;.label3.Text = "b";

//

// C

//.C.Location = new System.Drawing.Point(240, 56);.C.Name = "C";.C.Size = new System.Drawing.Size(80, 20);.C.TabIndex = 5;.C.Text = "";

//

// label4

//.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));.label4.ForeColor = System.Drawing.SystemColors.Desktop;.label4.Location = new System.Drawing.Point(208, 56);.label4.Name = "label4";.label4.Size = new System.Drawing.Size(16, 24);.label4.TabIndex = 6;.label4.Text = "=";

//

// label5

//.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));.label5.Location = new System.Drawing.Point(240, 24);.label5.Name = "label5";.label5.Size = new System.Drawing.Size(80, 24);.label5.TabIndex = 7;.label5.Text = "Сумма";

//

// Calculate

//.Calculate.Location = new System.Drawing.Point(104, 112);.Calculate.Name = "Calculate";.Calculate.Size = new System.Drawing.Size(120, 48);.Calculate.TabIndex = 8;.Calculate.Text = "Сложить";.Calculate.Click += new System.EventHandler(this.button1_Click);

//

// Form1

//.AutoScaleBaseSize = new System.Drawing.Size(5, 13);.ClientSize = new System.Drawing.Size(544, 437);.Controls.AddRange(new System.Windows.Forms.Control[] {

this.Calculate,

this.label5,

this.label4,

this.C,

this.label3,

this.label2,

this.label1,

this.B,

this.A});.Name = "Form1";.Text = "Form1";.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);.Load += new System.EventHandler(this.Form1_Load);.ResumeLayout(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]void Main()

{.Run(new Form1());

}void Form1_Load(object sender, System.EventArgs e)

{

}void button1_Click(object sender, System.EventArgs e)

{a, b;/*Обработка исключений, здесь выделяется блок кода, в котором могут возникнуть исключения(ошибки)*/

{=Convert.ToDouble(A.Text);/*Считываем текст (A.Text),

затем конвертируем его в формат double*/=Convert.ToDouble(B.Text);/*Считываем текст (B.Text),

затем конвертируем его в формат double*/.Text=Convert.ToString(a+b);/*Присваиваем тексту третьего редактора (С.Text) конвертированную в строковый формат сумму чисел(a+b)полученных из двух редакторов*/

}//Обработка исключений - произошла ошибка

{.Show("Проверьте правильность ввода чисел!");

}

}void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)

{p;//Объявляем пероg=CreateGraphics();

/*Это нужно для того, чтобы на поверхность выводился рисунок */clr = new Color();/* создается объект типа Color для хранения цвета*/R2,r2,k=1,=200;//максимальный радиус шара

int x,y;red=20,gre=250,blu=150;=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));

/*Запоминаем цвет в формате RGB*/=Color.FromArgb((int)200,(int)0,(int)0);=new Pen(clr);//Создаем перо.DrawRectangle(p,30,180,100,20);//Рисуем прямоугольник=System.Drawing.Pens.Fuchsia;//Выбираем цвет фуксин из библиотеки цветов

g.DrawLine(p,30,254,68,275);//Рисуем прямоугольни прямую линию=R*R;

/*Здесь рисуем шарик окружностями

* увеличивая его радиус и меняя цвет каждой окружности*/

for(y=0;y<=R;y++)(x=0;x<=y;x++)

{=(float)2*x*x;

if(r2>R2) break;=1-r2/R2;=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));=new Pen(clr);.DrawEllipse(p,(float)(250-0.5*x),(float)(250-0.5*x),(float)x,(float)x);// Именно здесь происходит вывод окружностей на поверхность

}

}

}

}



Лабораторная работа Основы программирования на C#. Windows?приложение Любое окно приложения для Window

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ