Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование / Заочники / 2 семестр / Методичка_ч3_Урок1

.pdf
Скачиваний:
54
Добавлен:
09.05.2015
Размер:
1.38 Mб
Скачать

3. Программирование на C#. Создание Windows-приложений.

Урок 1: Знакомство с Windows Forms.

Основная цель урока.

1. .Познакомиться с принципом создания приложений Windows Forms. 2. .Научиться добавлять элементы управления, изменить их свойства.

3. .Научиться создавать процедуры-обработчики событий элементов управления.

Краткая справка.

Архитектура Windows-приложения существенно отличается от консольного приложения. Если в консольном приложении весь код можно было написать в процедуре Main, то для Windows-приложений код, как правило, пишется в соответствующих процедурах-обработчиках событий.

При создании нового проекта Windows Forms будет создано приложение содержащее пустую форму рис 1.

Форма представляет собой окно, на котором размещаются элементы управления.

Элемент управления (элемент интерфейса) – примитив графического интерфейса пользователя, имеющий стандартный внешний вид и выполняющий стандартные действия. Примеры элементов управления – кнопка, тестовое поле,

комбинированный список, поле со списком и.т.д.

Форма, созданная в базовом проекте, является классом с именем Form1 (по умолчанию). Класс Form1 наследуется от класса Form, таким образом проявляется один из принципов объектно-ориентированного программирования – наследование.

Т.е. класс Form представляет собой пустую форму, а класс Form1, представляет форму, которая наследует весь функционал класса Form и может дополнительно содержать различные элементы управления, новые свойства и методы.

Процесс создания Windows-приложения состоит из двух этапов:

1.Размещение элементов управления на форме.

2.Написание кода в соответствующих процедурах-обработчиках событий.

Форма может отображаться в режиме дизайнера или в режиме редактирования кода. По умолчанию форма открывается в режиме дизайнера (см. рис 1).

В этом режиме отображается панель элементов управления (см. рис 1) из которой можно добавлять новые элементы на форму.

После добавления нового элемента на форму, например добавления кнопки(Button),

можно изменить свойства этого элемента управления в окне свойств (см .рис 1).

Свойство элемента управления это некоторая характеристика элемента управления отвечающая, как правило, за его внешний вид.

В окне свойств отображаются свойства текущего выделенного элемента управления. Чтобы изменить текст на добавленной на форму кнопке(Button) нужно выделить кнопку и изменить свойство Text. Чтобы изменить цвет кнопки нужно поменять свойство BackColor.

Чтобы открыть форму в режиме редактирования кода нужно нажать правым кликом на форме и выбрать из контекстного меню пункт « Перейти к коду» или нажать клавишу F7. Так же можно перейти в режим редактирования кода, дважды кликнув на любой элемент управления, но в этом случае будет создана процедура-

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

событием по умолчанию является событие Load(Загрузка), которое вызывается при загрузке формы.

Учебное задание 1.1.

Создать приложение Windows Forms, которое будет вычислять средний балл по трём предметам.

Технология выполнения учебного задания 1.1.

Шаг 1. Создадим новый проект. Из основного меню выбираем Файл -> Создать ->

Проект. В появившимся диалоговом окне выбираем Приложение Windows Forms.

Шаг 2. Кликните на форму и в окне свойств измените свойство Text формы на

« Средний балл». При этом заголовок формы должен поменяться.

Окно свойств обычно располагается в правой части экрана, если оно было закрыто его можно отобразить на экране через меню Вид -> Окно свойств.

Шаг 3. Разместите элементы управления типа Label (этикетка), TextBox (текстовое поле) и Button(кнопка) на форме, как показано на рисунке 1.

Элементы управлению располагаются на панели элементов, которая по умолчанию располагается в левой части экрана. Если окно панели элементов оказалось закрыто, его можно отобразить на экране через меню Вид -> Панель элементов.

Рисунок 1. Расположение элементов управления на форме.

Шаг 4. Измените свойство Text у размещённых элементов управления так,

чтобы ваша форма соответствовала рис. 1.

Шаг 5. У каждого элемента управления есть особое свойство – Name.Это имя элемента управления, через которое возможно взаимодействие с элементов в режиме редактирования кода. По умолчанию всем элементам управления даются стандартные имена, так первому тестовому полю, добавленному на форму будет присвоено имя TextBox1, второму – TextBox2 и.т.д.

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

Например, в данном задании для вычисления среднего балла нам необходимо считать значение свойства Text для первых трёх элементов управления, найти среднее и занести результат в четвёртое текстовое поле. Поэтому, как минимум, эти четыре текстовых поля должны иметь осмысленные имена.

Измените свойство Name у элементов управления, как показано в табл 1.

Таблица 1. Изменение свойств элементов управления

Элемент управления

Тип элемента

Имя свойства

Значение

 

 

 

 

 

 

Тестовое

поле

для

TextBox

Name

txtMat

хранения

баллов

по

 

 

 

математике.

 

 

 

 

 

 

 

 

 

 

 

Тестовое

поле

для

TextBox

Name

txtRus

хранения

баллов

по

 

 

 

русскому языку.

 

 

 

 

 

 

 

 

 

 

Тестовое

поле

для

TextBox

Name

txtInf

хранения

баллов

по

 

 

 

информатике.

 

 

 

 

 

 

 

 

 

 

Тестовое

поле

для

TextBox

Name

txtResult

отображения среднего

 

 

 

балла.

 

 

 

 

 

 

 

 

 

 

 

Шаг 6. В режиме дизайнера дважды кликните на кнопке « Вычислить», откроется окно редактирования кода, а для кнопки будет создана процедура-обработчик события Click. В листинге 1 приведён код, вычисляющий средний балл.

private void button1_Click(object sender, EventArgs e)

{

//считываем баллы из соответствующих тестовых полей float mat = Convert.ToSingle(txtMat.Text);

float rus = Convert.ToSingle(txtRus.Text); float inf = Convert.ToSingle(txtInf.Text); float result = (mat + rus + inf) / 3;

//присваиваем тестовому полю txtResult значение среднего балла txtResult.Text = result.ToString();

}

Листинг 1.

Шаг 7. Запустите программу, нажав клавишу F5. Убедитесь в работоспособности

программы.

Шаг 8. Усовершенствуем программу так, чтобы в тестовые поля для ввода баллов подсвечивались красным цветом, если в них ввести некорректные значения.

Для этого нужно обрабатывать событие TextChanged для каждого тестового поля.

Дважды кликните на тестовом поле txtMat, будет создана процедура-обработчик события TextChanged. Напишите в этой процедуре код из листинга 2.

private void txtMat_TextChanged(object sender, EventArgs e)

{

try

{

//пробуем преобразовать содержимое тествого поля в число...

float mat = Convert.ToSingle(txtMat.Text);

//если баллы принадлежат промежутку от 0 до 100...

if (mat >= 0 && mat <= 100)

{

//цвет поля - белый txtMat.BackColor = Color.White;

}

else

{

//иначе цвет поля - красный txtMat.BackColor = Color.Red;

}

}

catch (Exception ex)

{

//...невозможно преобразовать в число - меняем цвет на красный txtMat.BackColor = Color.Red;

}

}

Листинг 2.

Шаг 9. Самостоятельно повторите шаг 8 для двух других тестовых полей.

Шаг 10. Запустите программу, нажав клавишу F5, убедитесь в её работоспособности.

Шаг 11. Каждая процедура-обработчик события имеет 2 аргумента. Первый аргумент, это ссылка на элемент управления для которого вызывается событие.

Этот аргумент приведён к базовому типу – object.

Рисунок 2. Аргументы процедур-обработчиков событий.

Несколько разных элементов управления могут иметь одну и ту же процедуру-

обработчик события, например событие Click(щелчок мышью) есть у формы, кнопки,

тестового поля (и вообще практически у всех элементов управления). Если привязать к одной процедуре событие Click-а на форме, кнопке и ещё нескольких тестовых полей, то в коде нельзя будет отличить щелчок по кнопке, от щелчка по форме – т.к. процедура-обработчик события у всех этих элементов будет одинаковой. Но определить по какому компоненту щелкнули, всё-таки можно, для этого необходимо привести первый аргумент (sender) к объекту требуемого типа.

Например, если у нас есть одна процедура-обработчик события Click для 3-х

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

private void txtAny_Click(object sender, EventArgs e)

{

//явное приведение типа object к типу TextBox TextBox txt = (TextBox)sender;

txt.BackColor = Color.Red;

}

Т.е. если у нас есть процедура-обработчик события для текстового поля txtMat, то для того чтобы изменить по клику цвет фона мы можем просто написать:

txtMat.BackColor = Color.Red;

Но когда к одной процедуре привязаны события от нескольких разных компонентов,

единственным выходом является использование аргумента sender.

Сократим количество кода в программе, сделав одну процедуру-обработчик события

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

Рисунок 3. Список событий.

Найдите в списке событие TextChanged и дважды кликните по пустому полю справа от имени события (или можно ввести имя события вручную – пример txtAll_TextChanged и нажать Enter).

Врезультате этого действия будет создана новая процедура-обработчик события для 3-х тестовых полей. Процедуры txtMat_TextChanged, txtRus_TextChanged и txtInf_TextChanged останутся в коде, но они уже более не будет привязаны к событию соответствующих компонентов (имена этих процедур станут серыми – признак того, что они не используются в программе).

Всозданной процедуре-обработчике события запишите код, приведённый в листинге 3.

private void ИмяСобытия(object sender, EventArgs e)

{

//txt - тестовое поле, на которое мы кликнули TextBox txt = (TextBox) sender;

try

{

//пробуем преобразовать содержимое тествого поля в число...

float sum = Convert.ToSingle(txt.Text);

//если баллы принадлежат промежутку от 0 до 100...

if (sum >= 0 && sum <= 100)

{

//цвет поля - белый txt.BackColor = Color.White;

}

else

{

//иначе цвет поля - красный txt.BackColor = Color.Red;

}

}

catch (Exception ex)

{

//...невозможно преобразовать в число - меняем цвет на красный txt.BackColor = Color.Red;

}

}

Листинг 3.

Шаг 12. Удалите код процедур txtMat_TextChanged, txtRus_TextChanged и txtInf_TextChanged, т.к. они более не используются и заменены общей процедурой-

обработчиком события TextChanged.

Шаг 13. Запустите программу, нажав клавишу F5, убедитесь в её работоспособности.

Контрольные вопросы.

1.Что такое элемент управления?

2.Какие бывают элементы управления?

3.Что такое процедура-обработчик события?

4.Что такое свойство элемента управления ?

5.Приведите примеры свойств элемента управления « Кнопка».

Самостоятельное задание 1.2.

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

функционал показанный на рисунке 4.

Рисунок 4. Примерный интерфейс программы (может отличаться).

Требования к программе:

Поля ФИО и Специальность должны иметь осмысленные имена (например txtFIO и txtSpec).

Поля ФИО и Специальность должны подсвечиваться красным, если в них ничего не написано.

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

При нажатии кнопки « Подать заявку», если все тестовые поля заполнены корректно (т.е. цвет всех полей равен белому), то записываем в файл имеющий такое же имя как название специальности строку:

[ФИО подавшего заявку] [Баллы по мат-е] [Баллы по русскому] [Баллы по инф-е]

Строку в файл добавлять с помощью метода System.IO.File.AppendAllText.

Дополнительное (необязательное) задание (+2 балла к общему рейтингу).

Принимается в течение 2-х занятий.

Кнопка подать заявку должна быть « включена» ( свойство Enabled) только в том случае, если все поля заполнены корректно. Т.е. если хотя бы одно поле содержит ошибку (подсвечивается красным), свойство Enabled у кнопки должно быть равно false (чтобы на неё нельзя было кликнуть). Как только все поля заполняются корректно (причём не важно, в каком порядке!) – свойство Enabled

выставляется в true и кнопку можно нажимать.

Соседние файлы в папке 2 семестр