Создайте новый проект Ex1 в новом решении Lab6.
1‑й этап. Создадим визуальный интерфейс приложения (рис. 6.2).
Измените значения свойств формы следующим образом:
Свойство | Значение |
Name | MainForm |
Text | Конвертер |
Поместите на форму компонент Label, измените значения свойств следующим образом:
Свойство | Значение |
Name | CentiMLabel |
Text | Введите длину в сантиметрах |
Font. Size | 10 |
Поместите на форму компонент TextBox, измените значения свойств следующим образом:
Свойство | Значение |
Name | CentiMTextBox |
Text | |
Font. Size | |
TextAlign | Right |
Поместите на форму компонент Button, измените значения свойств следующим образом:
Свойство | Значение |
Name | ExecuteButton |
Font. Size | |
Text | Перевести |
Поместите на форму компонент Label, измените значения свойств следующим образом:
Свойство | Значение |
Name | InchLabel |
Font. Size | |
Text | Длина в дюймах |
Поместите на форму компонент TextBox, измените значения свойств следующим образом:
Свойство | Значение |
Name | InchTextBox |
Font. Size | |
Enabled | False |
Text | |
TextAlign | Right |
Измените размеры формы в соответствии с расположенными компонентами (рис. 6.2).
2‑й этап. Создание программного кода.
Создайте обработчик события Click кнопки ExecuteButton. Для этого достаточно выполнить двойной щелчок мышью по кнопке. При нажатии на кнопку «Перевести» требуется информацию, введенную пользователем в компонент CentiMTextBox, преобразовать в соответствии с математической формулой: дюймы = сантиметры / 2,54, – и отобразить результат в компоненте InchTextBox. Итак, в обработчике события Click кнопки ExecuteButton введем следующие операторы:
private void ExecuteButton_Click(object sender, EventArgs e)
{
try
{
InchTextBox.Text = (double.Parse(CentiMTextBox.Text)
/2.54).ToString();
}
catch
{
MessageBox.Show("Некорректный ввод данных", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
CentiMTextBox.Text = "0";
InchTextBox.Text = "0";
}
}
Отметим, что информация, введенная пользователем в компонент CentiMTextBox, хранится в свойстве Text в строковом формате, а значение длины в сантиметрах – это вещественное число. Для преобразования строковой величины в вещественное число используется метод Parse () класса double, для обратного преобразования используется метод ToString (). Кроме того, при попытке перевести строку в число может возникнуть ошибка. Оператор try позволяет обработать эту исключительную ситуацию программным путем и вывести сообщение об ошибке.
Синтаксис оператора:
try
{
… //контролируемый блок
}
catch //один или несколько блоков
{
… //блок обработки исключений
}
finally
{
… //блок завершения
}
Программные инструкции, которые нужно проконтролировать на предмет исключений, помещаются в блок try. Если исключение возникает в этом блоке, оно дает знать о себе выбросом определенного рода информации. Выброшенная информация может быть перехвачена и обработана соответствующим образом с помощью блока catch. Весь код, который должен быть обязательно выполнен при выходе из блока try, в любом случае, произошла ошибка или нет, помещается в блок finally.
Изучению способов использования обработчиков исключительных ситуаций посвящена лекция 4.
Сохраните изменения, внесенные в проект. Запустите приложение.
Создайте обработчик события KeyDown компонента CentiMTextBox. Укажите в нем следующее:
if (e.KeyCode == Keys.Enter) ExecuteButton_Click(sender,e);
Теперь подсчет результата будет выполняться не только при нажатии на кнопку ExecuteButton, но и при нажатии на клавишу Enter. Убедитесь в этом, запустив приложение.
Упражнение 6.2. Дополним приложение «Конвертер» возможностью перевода сантиметров не только в дюймы, но еще и в футы и ярды.