Windows − приложение

 

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

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

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

 

Accessibility ­− доступность

Appearance − появление

Behavior − поведение

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

Data − данные

Design − проект

Focus − фокус

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

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

 

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

· цвет поверхности – 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), связанные с формой, можно рассмотреть события. На той же панели свойств есть кнопка с пиктограммой «молния». Щелкнем на ней. При этом отобразятся различные события, связанные:

 

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

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

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

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

· с размером окна,

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

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

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

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

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

Затем, для удобства изменим имена (Name, а не Text!) 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)

{//создается объект типа Color для хранения цвета

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

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

Graphics g=CreateGraphics();//Создаем контекст графического устройства

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

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

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

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

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

float R2,r2,k=1,

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

R2=R*R;

int x,y;

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

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)(210-0.5*x),(float)(200-0.5*x),(float)x,(float)x);

}

}

Скомпилировать и выполнить приложение.

Вопросы:

1. Какие разделы свойств содержит панель Properties.

2. В теле какой функции происходит создание элементов управления Windows?

3. Что означает свойство TabIndex элемента управления?

4. Как задается местоположение и размер элементов управления с помощью мыши?

5. Как задается местоположение и размер элементов управления с помощью панели Properties?

6. Как создаются обработчики событий с помощью панель Properties?

7. Каким образом можно задать имя обработчика события, отличное от имени, предлагаемого мастером приложения?

8. В теле какой функции мастер создания приложения осуществляет “подписку” на событие?

9. Обработчик, какого события формируется при двойном щелчке на поверхности формы?

10. Обработчик, какого события формируется при двойном щелчке на поверхности элемента управления?

 

Задания:

1. Создать приложение, в котором, при щелчке мыши на поверхности кнопки увеличивалась прозрачность формы в 2 раза.

2. Создать приложение, в котором, при щелчке мыши на поверхности кнопки текст заголовка формы изменялся на текст окна редактора текста (TextBox).

3. Создать приложение, в котором, при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна редактора текста (TextBox).

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

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

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

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

8. Создать приложение, в котором, при щелчке мыши на поверхности кнопки ширина формы в пикселях изменялась на число в окне редактора текста (TextBox).

9. Создать приложение, в котором, при щелчке мыши на поверхности одной кнопки цвет фона формы становится, синим, а при нажатии на другую кнопку, красным.

10. Создать приложение, в котором, при щелчке мыши на поверхности кнопки местоположение кнопки на поверхности формы изменялось в соответствии с координатами, введенными в окна редакторов текста (TextBox).

11. Создать приложение, в котором, при щелчке мыши на поверхности кнопки местоположение формы на поверхности экрана монитора изменялось в соответствии с координатами, введенными в окна редакторов текста (TextBox).

 

 

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