Создадим приложение для вычисления площади квадрата. Сторону квадрата (действительное число) будем вводить в поле ввода. При нажатии на кнопку «Вычислить», в элемент Label должна выводиться площадь квадрата с введенной стороной. Украсим форму рисунком и изменим цвет фона и цвет текста.
В конструкторе форм создадим 5 надписей (элементов Label), одно поле ввода (элемент TextBox) и одну кнопку (элемент Button).
Выделим форму и зададим для всех элементов цвет текста и цвет фона.
Изменим свойства элемента Label1. Для этого выделим его и откроем для него панель свойств. Свойство Name оставим умалчиваемое - label1. Свойству Text присвоим значение «Площадь квадрата». Для свойства Font откроем обзор и выберем Arial, размер 12, полужирный.
В результате получился заголовок
Аналогично, изменим свойства всех остальных элементов так:
Добавим на форму картинку triskell.png. Для этого перетащим на форму элемент PictureBox и изменим его свойство Image.
В процессе построения приложения, у нас автоматически создается два класса: Класс Form1 и класс Program.
В классе Program, в методе Main автоматически выводится код, который создает экземпляр класса Form1. Это наша конкретная форма. Здесь мы ничего корректировать не будем.
Немного поясним команды метода Main.
Application – класс, который предоставляет методы и свойства для управления приложением.
// Включает визуальные стили для приложения.
Application.EnableVisualStyles();
// Задает значения по умолчанию во всем приложении
Application.SetCompatibleTextRenderingDefault(false)
// Создает экземпляр класса Form1 и открывает его Application.Run(new Form1());
Эти команды создаются автоматически, здесь мы ничего не делаем.
В классе Form1 уже находится метод Form1, который выполняет инициализацию всех элементов нашей формы.
Для взаимодействия с пользователем в Windows Forms используется механизм событий. События в Windows Forms представляют стандартные события на C#, только применяемые к визуальным компонентам и подчиняются тем же правилам, что события в C#. Но создание обработчиков событий в Windows Forms все же имеет некоторые особенности.
Прежде всего в WinForms есть некоторый стандартный набор событий, который по большей части имеется у всех визуальных компонентов. Отдельные элементы добавляют свои события, но принципы работы с ними будут похожие. Чтобы посмотреть все события элемента, нам надо выбрать этот элемент в поле графического дизайнера и перейти к вкладке событий на панели форм. Например, события формы:
Чтобы добавить обработчик, можно просто два раза нажать по пустому полю рядом с названием события, и после этого Visual Studio автоматически сгенерирует обработчик события. Например, нажмем для создания обработчика для события Load:
И в этом поле отобразится название метода обработчика события Load. По умолчанию он называется Form1_Load.
Если мы перейдем в файл кода формы Form1.cs, то увидим автосгенерированный метод Form1_Load:
И при каждой загрузке формы будет срабатывать код в обработчике Form1_Load.
Как правило, большинство обработчиков различных визуальных компонентов имеют два параметра: sender - объект, инициировавший событие, и аргумент, хранящий информацию о событии (в данном случае EventArgs e). Но это только обработчик.
Добавление же обработчика, созданного таким образом, производится в файле Form1.Designer.cs:
Для добавления обработчика используется стандартный синтаксис C#: this.Load += new System.EventHandler(this.Form1_Load)
Поэтому если мы захотим удалить созданный подобным образом обработчик, то нам надо не только удалить метод из кода формы в Form1.cs, но и удалить добавление обработчика в этом файле.
Вернемся к нашему проекту. После метода Form1 мы должны добавить обработчик события Click для кнопки button1
Обработчик события Click кнопки button1 должен считывать сторону из поля textBox1, вычислять площадь квадрата и записывать результат в элемент label5.
Перейдем на вкладку Конструктор, выделим кнопку button1 и выберем вкладку Свойства. Затем нажмем и выведем панель событий для кнопки
Выберем нужное событие двойным кликом
В классе Form1 появится заготовка для метода, который должен выполняться, если возникнет событие Click.
В месте, где должен быть код обработчика события Click для объекта button1 напишем операторы, которые считывают информацию из текстового поля textBox1, вычисляют площадь квадрата и выводят ее в элемент label5.
Сторона из текстового поля textBox1 - это значение свойства Text этого поля. Это значение имеет формат string, поэтому его преобразовывают к типу Double с помощью метода Convert.ToDouble. Полученное значение присваивается действительной переменной a.
Используя введенное значение a, вычислим площадь квадрата. Для этого изменим свойство Text элемента label5. Поместим туда вычисленную площадь квадрата, предварительно преобразовав в тип String.
Проверим работу программы. Введем сторону =4,8.
Вариант | Действия с данными | Свойства текста в окне |
---|---|---|
1 | Сложить числа | Цвет текста, курсив |
2 | Перемножить числа | Цвет текста, цвет фона |
3 | От первого числа отнять второе | Цвет текста, выравнивание |
4 | Сравнить числа (больше, меньше, равны) | Цвет текста, шрифт |
5 | Разделить первое на второе. Проверить второе число на равенство 0. | Цвет текста, размер шрифта |
6 | Проверить четность (оба четные, оба нечетные, одно четное) | Цвет фона, подчеркивание. |
7 | Проверить знак (оба положительные, оба отрицательные, одно положительное) | Цвет текста, фон картинка |
8 | Проверить их четность (оба четные, оба нечетные, одно четное) | Цвет фона, размер шрифта. |
9 | Найти количество кратных 5 | Цвет фона, размер шрифта |
10 | Проверить однозначность (оба однозначные, оба не однозначные, одно однозначное) | Фон картинка, жирный. |
11 | Проверить двузначность (оба двузначные, оба не двузначные, одно двузначное) | Цвет фона, шрифт |
12 | Проверить значность (оба трехзначные, оба не трехзначные, одно трехзначное) | Фон картинка, размер шрифта |
13 | Проверить простоту (оба простые, оба непростые, одно простое) | Фон картинка, цвет текста |
14 | Проверить так: оба палиндромы, оба не палиндромы, одно палиндром | Цвет текста, жирность. |
15 | Проверить так: оба числа Фибоначчи, оба не Фибоначчи, одно Фибоначчи | Фон картинка, шрифт, размер шрифта. |