Основы разработки приложений Windows Forms и WPF
План работы
Консоль и оконное приложение
Что такое Windows Forms
Три главных понятия
Форма (Form)
Элементы управления (Controls)
Что такое событие (Event)
Что такое обработчик события
Как выглядит обработчик в коде
Разбор по частям:
Команда MessageBox.Show
Как взять текст из поля ввода
Первый полный пример программы
Первый полный пример программы
Задание 1
Правильный ответ к заданию 1
Продолжение
Почему текст нельзя складывать
Превращение текста в число
Обратное превращение (число в текст)
Полный пример сложения с превращениями
Задание 2 
Правильный ответ к заданию 2
Проблема: программа вылетает
Защита с помощью try-catch
Защита с помощью try-catch
Пример с делением на ноль
Задание 3
Правильный ответ к заданию 3
Условный оператор if
Примеры условий
Составные условия (И, ИЛИ)
Задание 4
Правильный ответ к заданию 4
Большое задание: Калькулятор с историей
Имена элементов (запомнить)
94.96K
Category: programmingprogramming

Основы разработки приложенийWindows Forms и WPF (3)

1. Основы разработки приложений Windows Forms и WPF

Введение в визуальное программирование

2. План работы

• Что такое Windows Forms
• Форма, элементы управления, события
• Жизненный цикл оконной программы
• Основные элементы: Label, TextBox, Button, ComboBox, ListBox
• Событие Click и обработчики
• Пишем первую программу

3. Консоль и оконное приложение

Консольная программа:
Оконное приложение (Windows Forms):
• Чёрное окно
• Любой дизайн на ваш вкус
• Только текст
• Кнопки, поля, списки, картинки
• Ввод командами
• Управление мышью
• Программа идёт по порядку сверху вниз
• Программа ждёт действий пользователя

4. Что такое Windows Forms

Windows Forms = конструктор для программ
• Готовые детали (кнопки, поля, списки)
• Перетаскиваешь мышкой на форму
• Компьютер сам пишет код за тебя
• Работает только на Windows
Простыми словами:
Это технология для создания программ с окнами и кнопками.

5. Три главных понятия

Любая программа на Windows Forms держится на трёх вещах:
• ФОРМА — окно программы (контейнер для всего)
• ЭЛЕМЕНТ УПРАВЛЕНИЯ — кнопка, поле, список, надпись
• СОБЫТИЕ — действие пользователя (клик, ввод текста, наведение
мыши)
Запомните фразу:
«Форма держит кнопки, кнопки слушают клики»

6. Форма (Form)

Форма — это окно вашей программы.
У формы есть:
• Заголовок (например, «Калькулятор»)
• Кнопки «Свернуть», «Развернуть», «Закрыть»
• Размер (ширина и высота)
• Цвет фона
• Расположение на экране
Всё, что вы видите, когда запускаете программу — это форма. Без
формы у программы нет окна.

7. Элементы управления (Controls)

Элементы управления — то, что вы кладёте на форму.
Пять основных элементов:
• Label (Метка) — обычный текст, который нельзя редактировать.
Используется для подписей.
• TextBox (Текстовое поле) — белый прямоугольник, куда пользователь
печатает текст или цифры.
• Button (Кнопка) — прямоугольник с надписью, на который нажимают.
• ComboBox (Выпадающий список) — поле со стрелочкой. При нажатии
появляется список вариантов.
• ListBox (Список) — просто список строк. Например, история
вычислений.
Все остальные элементы — это вариации этих пяти.

8. Что такое событие (Event)

Событие — это действие пользователя.
Примеры событий:
• Нажатие на кнопку (Click)
• Ввод текста в поле (TextChanged)
• Наведение мыши на элемент (MouseEnter)
• Уход мыши с элемента (MouseLeave)
• Нажатие клавиши на клавиатуре (KeyPress)
• Двойной клик мыши (DoubleClick)

9. Что такое обработчик события

• Обработчик — это код, который выполняется, когда случается событие.
• Пример из жизни:
Вы нажимаете на кнопку звонка в дверях (событие) → звенит звонок
(обработчик)
• Вы нажимаете на педаль газа в машине (событие) → машина
ускоряется (обработчик)
• Вы кидаете письмо в почтовый ящик (событие) → почтальон забирает
письмо (обработчик)
• В программе:
Пользователь нажал на кнопку → выполнился код внутри обработчика

10. Как выглядит обработчик в коде

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Привет, мир!");
}

11. Разбор по частям:

• private — означает, что обработчик доступен только внутри нашей формы. Никто
снаружи не может его случайно вызвать.
• void — означает, что обработчик ничего не возвращает. Он просто делает что-то и
всё.
• button1_Click — это имя обработчика. button1 — имя кнопки. _Click — какое
событие (нажатие).
• object sender — параметр, который говорит, кто вызвал событие. Если у вас много
кнопок, можно узнать, какую именно нажали.
• EventArgs e — дополнительные параметры события (например, координаты мыши).
• { } — фигурные скобки. Внутри них пишется код, который выполнится при нажатии.
• MessageBox.Show("Привет, мир!"); — команда показать всплывающее окошко с
текстом. Точка с запятой в конце обязательна.

12. Команда MessageBox.Show

• MessageBox.Show("Текст сообщения");
Эта команда показывает всплывающее окошко с текстом. Пользователь
должен нажать кнопку «ОК», чтобы закрыть его.
Примеры:
MessageBox.Show("Привет, мир!");
MessageBox.Show("Ошибка! Введите число.");
MessageBox.Show("Результат: " + переменная);
• Важно: в конце каждой команды в C# ставится точка с запятой (;). Если
забыть — программа не скомпилируется.

13. Как взять текст из поля ввода

У каждого текстового поля (TextBox) есть свойство Text. Оно хранит то,
что напечатал пользователь.
Чтобы забрать текст из поля, пишем:
• string переменная = имяПоля.Text;
Пример:
string userName = txtName.Text;
MessageBox.Show("Привет, " + userName);
Разбор:
string — тип переменной (строка текста)
userName — имя переменной (вы придумываете сами)
= — оператор присваивания (кладём то, что справа, в то, что слева)
txtName.Text — свойство Text поля с именем txtName
• После этого переменную userName можно использовать где угодно.

14. Первый полный пример программы

Допустим, у нас есть:
• Текстовое поле с именем txtName
• Кнопка с именем btnSayHello
• При нажатии на кнопку программа берёт имя из поля и
здоровается.

15. Первый полный пример программы

Код обработчика для кнопки:
private void btnSayHello_Click(object sender, EventArgs e)
{
string name = txtName.Text;
MessageBox.Show("Привет, " + name + "!");
}
• Если пользователь ввёл «Анна», появится окошко: «Привет,
Анна!»
• Символ + склеивает текст и переменные.

16. Задание 1

Напишите обработчик для кнопки с именем btnGreeting.
• У вас есть текстовое поле с именем txtCity.
• При нажатии на кнопку должно появляться окошко: «Твой город:
Москва», где Москва — это то, что ввёл пользователь.

17. Правильный ответ к заданию 1

private void btnGreeting_Click(object sender, EventArgs e)
{
string city = txtCity.Text;
MessageBox.Show("Твой город: " + city);
}

18. Продолжение

• Превращать текст из поля в число (для калькулятора)
• Превращать число обратно в текст
• Защищать программу от вылетов (try-catch)
• Проверять условия (if-else)
• Писать полноценный калькулятор с историей

19. Почему текст нельзя складывать

• Пользователь вводит в поле цифры. Например, вводит «5» и «3».
• Для вас это числа. Для программы — текст. Текст «5» — это не
число 5.
• С текстом нельзя складывать, вычитать, умножать.
• Если написать «5» + «3», программа склеит их в «53», а не сложит
в 8.
• Поэтому нужно научиться превращать текст в число перед тем,
как считать.

20. Превращение текста в число

Для превращения текста в число используем команды Convert.
Для целых чисел (1, 2, 10, -5):
• int переменная = Convert.ToInt32(поле.Text);
• Для дробных чисел (1.5, 3.14, -0.5):
• double переменная = Convert.ToDouble(поле.Text);
Пример:
int a = Convert.ToInt32(txtNum1.Text);
int b = Convert.ToInt32(txtNum2.Text);
int sum = a + b;
• Теперь a и b — это настоящие числа, их можно складывать.

21. Обратное превращение (число в текст)

После того как мы получили число-результат, его нужно положить
обратно в текстовое поле. А в текстовое поле можно положить
только текст.
Поэтому число превращаем обратно в текст с помощью метода
ToString().
• txtResult.Text = результат.ToString();
Пример:
int sum = 42;
txtResult.Text = sum.ToString(); // в поле появится «42»
• Метод ToString() есть у любого числа (int, double и других).

22. Полный пример сложения с превращениями

• private void btnAdd_Click(object sender, EventArgs e)
{
// Берём текст из полей
string text1 = txtNum1.Text;
string text2 = txtNum2.Text;
• // Превращаем текст в числа
int num1 = Convert.ToInt32(text1);
int num2 = Convert.ToInt32(text2);
• // Складываем числа
int result = num1 + num2;
• // Превращаем число в текст и кладём в поле результата
txtResult.Text = result.ToString();
}
Теперь при нажатии на кнопку btnAdd программа сложит два числа и покажет
результат

23. Задание 2 

Задание 2
Напишите обработчик для кнопки btnSubtract (вычитание).
• У вас есть:
• Поле txtNum1 (первое число)
• Поле txtNum2 (второе число)
• Поле txtResult (результат)
Нужно вычесть из первого числа второе и показать результат.
Используйте Convert.ToInt32 и ToString.

24. Правильный ответ к заданию 2

private void btnSubtract_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(txtNum1.Text);
int b = Convert.ToInt32(txtNum2.Text);
int c = a - b;
txtResult.Text = c.ToString();
}

25. Проблема: программа вылетает

Что будет, если пользователь введёт в поле не число, а буквы?
Например, в поле txtNum1 пользователь написал «абв».
Convert.ToInt32("абв") — не может превратить буквы в число.
Программа вылетит с ошибкой. Появится красное окно, и программа
закроется.
Пользователь может ошибиться:
• Ввести буквы вместо цифр
• Оставить поле пустым
• Разделить на ноль
• Ввести слишком большое число
Мы не можем запретить пользователю ошибаться. Но мы можем защитить
программу.

26. Защита с помощью try-catch

Конструкция try-catch — это как страховка.
• try
{
// Опасный код — может упасть
int a = Convert.ToInt32(txtNum1.Text);
int b = Convert.ToInt32(txtNum2.Text);
int c = a + b;
txtResult.Text = c.ToString();
}
catch
{
// Сюда программа прыгает, если произошла ошибка
MessageBox.Show("Ошибка! Введите числа.");
}

27. Защита с помощью try-catch

Как это работает:
• Программа заходит в try и начинает выполнять код.
• Если всё хорошо — catch игнорируется, программа идёт дальше.
• Если в любой строчке внутри try произошла ошибка — программа
немедленно прыгает в catch.
• В catch мы показываем сообщение об ошибке.
• После catch программа продолжает работать, не вылетая.

28. Пример с делением на ноль

Для деления нужно добавить отдельную проверку на ноль.
• try
{
double a = Convert.ToDouble(txtNum1.Text);
double b = Convert.ToDouble(txtNum2.Text);
• // Проверяем, не ноль ли второе число
if (b == 0)
{
MessageBox.Show("На ноль делить нельзя!");
return; // выходим из обработчика
}
• double c = a / b;
txtResult.Text = c.ToString();
}
catch
{
MessageBox.Show("Ошибка! Введите числа.");
}
Здесь двойная защита:
• try-catch ловит ошибки превращения букв в числа
• if (b == 0) проверяет деление на ноль

29. Задание 3

• Напишите обработчик для кнопки btnDivide (деление) с защитой
try-catch и проверкой на ноль.
• Используйте double (дробные числа).

30. Правильный ответ к заданию 3

• private void btnDivide_Click(object sender, EventArgs e)
{
try
{
double a = Convert.ToDouble(txtNum1.Text);
double b = Convert.ToDouble(txtNum2.Text);
• if (b == 0)
{
MessageBox.Show("На ноль делить нельзя!");
return;
}
• double c = a / b;
txtResult.Text = c.ToString();
}
catch
{
MessageBox.Show("Ошибка! Введите числа.");
}
}

31. Условный оператор if

Оператор if позволяет выполнять код только при выполнении условия.
Общий вид:
• if (условие)
{
// Код, который выполнится, если условие истинно
}
else
{
// Код, который выполнится, если условие ложно
}
Условия пишутся с помощью знаков сравнения:
== равно
!= не равно
< меньше

32. Примеры условий

Проверка на пустое поле:
if (txtName.Text == "")
{
MessageBox.Show("Вы не ввели имя!");
}
• Проверка на возраст:
int age = Convert.ToInt32(txtAge.Text);
if (age < 18)
{
MessageBox.Show("Доступ запрещён!");
}
else
{
MessageBox.Show("Добро пожаловать!");
}
Проверка на пароль:
if (txtPassword.Text == "1234")
{
MessageBox.Show("Вход выполнен!");
}
else
{
MessageBox.Show("Неверный пароль!");
}

33. Составные условия (И, ИЛИ)

Можно проверять несколько условий одновременно.
• И (оба условия должны быть истинны):
if (условие1 && условие2)
• ИЛИ (хотя бы одно условие истинно):
if (условие1 || условие2)
Пример с И:
if (txtLogin.Text == "admin" && txtPassword.Text == "1234")
{
MessageBox.Show("Здравствуйте, администратор!");
}
• Пример с ИЛИ:
if (txtName.Text == "" || txtAge.Text == "")
{
MessageBox.Show("Заполните все поля!");
}

34. Задание 4

• Напишите проверку: если пользователь ввёл возраст больше 100,
показать «Вы точно живы?», иначе показать «Ваш возраст: N», где
N — введённый возраст.
• Используйте if-else.

35. Правильный ответ к заданию 4

• int age = Convert.ToInt32(txtAge.Text);
• if (age > 100)
{
MessageBox.Show("Вы точно живы?");
}
else
{
MessageBox.Show("Ваш возраст: " + age);
}

36. Большое задание: Калькулятор с историей

Что должен уметь калькулятор:
• Пользователь вводит два числа
• Выбирает операцию (плюс, минус, умножить, разделить)
• Нажимает кнопку «Вычислить»
• Видит результат
• Каждое вычисление добавляется в список истории
• Есть кнопка «Очистить историю»
• Программа не вылетает при ошибках

37. Имена элементов (запомнить)

• txtNum1 — поле для первого числа
txtNum2 — поле для второго числа
cmbOperation — выпадающий список с операциями (пункты: «+»,
«-», «*», «/»)
btnCalc — кнопка «Вычислить»
txtResult — поле для результата
lstHistory — список для истории
btnClearHistory — кнопка «Очистить историю»
• Поле для результата (txtResult) сделайте ReadOnly — чтобы
пользователь не мог его редактировать.
English     Русский Rules