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

Правила создания и особенности работы с приложением Windows Application. Рассмотрение структуры панели Properties и ее функционального назначения. Возможности пункта меню "View". Практическая разработка приложения - калькулятора для сложения двух чисел.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 01.12.2011
Размер файла 99,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

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

Основы программирования на 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)

{

double a, b;

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

{

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

затем конвертируем его в формат double*/

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

затем конвертируем его в формат double*/

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

}

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

{

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

}

}

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

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

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

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

{

Pen p;//Объявляем перо

Graphics g=CreateGraphics();

/*Это нужно для того, чтобы на поверхность выводился рисунок */

Color clr = new Color();/* создается объект типа Color для хранения цвета*/

float R2,r2,k=1,

R=200;//максимальный радиус шара

int x,y;

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

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

clr=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));

clr=Color.FromArgb((int)200,(int)0,(int)0);

p=new Pen(clr);//Создаем перо

g.DrawRectangle(p,30,180,100,20);//Рисуем прямоугольник

p=System.Drawing.Pens.Fuchsia;/*Выбираем цвет фуксин из библиотеки цветов*/

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

R2=R*R;

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

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

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

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

{

r2=(float)2*x*x;

if(r2>R2) break;

k=1-r2/R2;

clr=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));

p=new Pen(clr);

g.DrawEllipse(p,(float)(250-0.5*x),(float)(250-0.5*x),(float)x,(float)x);/* Именно здесь происходит вывод окружностей на поверхность*/

}

}

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

Задания

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

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

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

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

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

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

Приложение

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

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace WindowsApplication4

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label2;

private System.Windows.Forms.Label label3;

private System.Windows.Forms.Label label4;

private System.Windows.Forms.Label label5;

private System.Windows.Forms.TextBox A;

private System.Windows.Forms.TextBox B;

private System.Windows.Forms.Button Calculate;

private System.Windows.Forms.TextBox C;

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.Container components = null;

public Form1()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.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>

private void InitializeComponent()

{

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

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

this.label1 = new System.Windows.Forms.Label();

this.label2 = new System.Windows.Forms.Label();

this.label3 = new System.Windows.Forms.Label();

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

this.label4 = new System.Windows.Forms.Label();

this.label5 = new System.Windows.Forms.Label();

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

this.SuspendLayout();

//

// A

//

this.A.Location = new System.Drawing.Point(16, 56);

this.A.Name = "A";

this.A.Size = new System.Drawing.Size(64, 20);

this.A.TabIndex = 0;

this.A.Text = "1";

//

// B

//

this.B.Location = new System.Drawing.Point(120, 56);

this.B.Name = "B";

this.B.Size = new System.Drawing.Size(72, 20);

this.B.TabIndex = 1;

this.B.Text = "";

//

// label1

//

this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));

this.label1.Location = new System.Drawing.Point(40, 32);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(16, 16);

this.label1.TabIndex = 2;

this.label1.Text = "A";

//

// label2

//

this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));

this.label2.Location = new System.Drawing.Point(88, 56);

this.label2.Name = "label2";

this.label2.Size = new System.Drawing.Size(16, 23);

this.label2.TabIndex = 3;

this.label2.Text = "+";

//

// label3

//

this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));

this.label3.Location = new System.Drawing.Point(144, 32);

this.label3.Name = "label3";

this.label3.Size = new System.Drawing.Size(16, 24);

this.label3.TabIndex = 4;

this.label3.Text = "b";

//

// C

//

this.C.Location = new System.Drawing.Point(240, 56);

this.C.Name = "C";

this.C.Size = new System.Drawing.Size(80, 20);

this.C.TabIndex = 5;

this.C.Text = "";

//

// label4

//

this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));

this.label4.ForeColor = System.Drawing.SystemColors.Desktop;

this.label4.Location = new System.Drawing.Point(208, 56);

this.label4.Name = "label4";

this.label4.Size = new System.Drawing.Size(16, 24);

this.label4.TabIndex = 6;

this.label4.Text = "=";

//

// label5

//

this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));

this.label5.Location = new System.Drawing.Point(240, 24);

this.label5.Name = "label5";

this.label5.Size = new System.Drawing.Size(80, 24);

this.label5.TabIndex = 7;

this.label5.Text = "Сумма";

//

// Calculate

//

this.Calculate.Location = new System.Drawing.Point(104, 112);

this.Calculate.Name = "Calculate";

this.Calculate.Size = new System.Drawing.Size(120, 48);

this.Calculate.TabIndex = 8;

this.Calculate.Text = "Сложить";

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

//

// Form1

//

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

this.ClientSize = new System.Drawing.Size(544, 437);

this.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});

this.Name = "Form1";

this.Text = "Form1";

this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);

this.Load += new System.EventHandler(this.Form1_Load);

this.ResumeLayout(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

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

{

}

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

{

double a, b;

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

{

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

затем конвертируем его в формат double*/

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

затем конвертируем его в формат double*/

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

}

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

{

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

}

}

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

{

Pen p;//Объявляем перо

Graphics g=CreateGraphics();

/*Это нужно для того, чтобы на поверхность выводился рисунок */

Color clr = new Color();/* создается объект типа Color для хранения цвета*/

float R2,r2,k=1,

R=200;//максимальный радиус шара

int x,y;

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

clr=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));

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

clr=Color.FromArgb((int)200,(int)0,(int)0);

p=new Pen(clr);//Создаем перо

g.DrawRectangle(p,30,180,100,20);//Рисуем прямоугольник

p=System.Drawing.Pens.Fuchsia;//Выбираем цвет фуксин из библиотеки цветов

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

R2=R*R;

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

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

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

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

{

r2=(float)2*x*x;

if(r2>R2) break;

k=1-r2/R2;

clr=Color.FromArgb((int)(k*red),(int)(k*gre),(int)(k*blu));

p=new Pen(clr);

g.DrawEllipse(p,(float)(250-0.5*x),(float)(250-0.5*x),(float)x,(float)x);// Именно здесь происходит вывод окружностей на поверхность

}

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Разработка клиент-серверного приложения под управлением Windows на языке программирования Delphi, реализующего функции дистанционного обучения (тесты). Основная форма программы, которая состоит из меню, панели активации пользователя и панели чата.

    курсовая работа [4,3 M], добавлен 15.04.2019

  • Основные типы модулей, использующиеся в среде программирования Delphi 6. Концепция объектно-ориентированного программирования. Разработка эскизного и технического проектов программы. Алгоритм выполнения операций сложения, вычитания и умножения матриц.

    курсовая работа [559,1 K], добавлен 03.01.2011

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

    курсовая работа [164,5 K], добавлен 18.05.2014

  • Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.

    курсовая работа [1,3 M], добавлен 12.12.2011

  • Внешний вид и возможности меню Пуск - главного меню Windows XP. Содержание меню "Документы", "Избранное", "Справка", "Поиск", "Выполнить", "Завершение сеанса". Назначение папки "Автозагрузка". Создание ярлыков на рабочем столе для используемых программ.

    реферат [12,1 K], добавлен 23.07.2009

  • Изучение пользовательского интерфейса Windows XP, рабочий стол, учетные записи пользователей и их удаление, главное меню, панели инструментов. Папки и файлы, их создание, перемещение и копирование, удаление и восстановление, атрибуты файловых объектов.

    лабораторная работа [251,6 K], добавлен 07.10.2009

  • Программирование для Windows. Возможности нового интерфейса. Окна и их управляющие компоненты. DOS и Windows: разные подходы к программированию. Особенности работы с базами данных. Структура программ в CA-Visual Objects. Генерация и обработка событий.

    курсовая работа [1,3 M], добавлен 02.03.2010

  • Создание приложения Windows, позволяющего автоматизировать процесс обработки информации студентов университета. Организация работы с физическими файлами в языках программирования. Изучение средств IDE Delphi для организации работы с текстовыми файлами.

    курсовая работа [1,5 M], добавлен 08.11.2011

  • Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.

    курсовая работа [348,1 K], добавлен 02.07.2011

  • Основы организации приложения в Windows. Посылка и передача сообщений для окон. Создание и отображение главного окна приложения. Деактивация приложения, его фазы. Сообщения клавиатуры и функции для работы с ней. Определение состояния отдельных клавиш.

    лекция [65,7 K], добавлен 24.06.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.