logo
Программирование в Windows.Forms-приложениях

2.4 Предотвращение ошибок

1. При выборе команды «Calc» открывается окно сообщений с результатами.

Но для начала нам нужно определить выбраны ли пользователем какие-то величины, если выбран хотя бы один из пунктов, то выводим окно с результатами:

if (result != "")

{

MessageBox.Show(result, "Result");

}

Если ни один из пунктов не выбран - то выводим окно ошибки (Рис. 2.4.1):

else

{

MessageBox.Show("Вы не выбрали флаги!", "Error");

}

Рис. 2.4.1 - Ошибка

Задаем строку, которая будет выводиться: string result = "";

Далее смотрим какие выбраны величины:

o если выбран пункт «Square» (Площадь), то задаем условие (Рис. 2.4.2):

if (Data.Square == true)

{

result = "Square = " + Convert.ToString(Math.PI * (Data.Radius *

Data.Radius)) + " ";

}

Рис. 2.4.2 - Площадь

o если выбран пункт «Length» (Длина окружности), то задаем условие (Рис. 2.4.3):

if (Data.Length == true)

{

result += "Length = " + Convert.ToString(2 * Math.PI * Data.Radius);

}

Рис. 2.4.3 - Длина окружности

2. «Draw» - при выборе данной команды в центре главного окна выводится круг введенного радиуса или выдается сообщение, что рисование невозможно (если диаметр превышает размеры рабочей области).

Чтобы нарисовать круг необходимо для начала создать холст по размерам pictureBox:

Bitmap image = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Далее подключаем графику:

Graphics g = Graphics.FromImage(image);

Также нам нужно проверить, подойдет ли по размерам заданный круг в pictureBox, для этого задаем условие:

if (Data.Radius < 300)

Если подходит - рисуем круг (Рис. 2.4.4):

if (Data.Radius < 300)

{

g.DrawEllipse(new Pen(Color.Black), 0, 0, Data.Radius, Data.Radius);

}

Рис. 2.4.4 - Рисунок

Если не подходит - пишем в pictureBox предупреждение(Рис. 2.4.5):

else

{

g.DrawString("Слишком большой размер", new Font("Microsoft Sans

Serif", 12), new SolidBrush(Color.Black), 0, 0);

}

И выводим результат (либо рисунок, либо предупреждение):

pictureBox1.Image = image;

Рис. 2.4.5 - Предупреждение

3. «Send» - при нажатии на эту кнопку производятся все расчеты и данное диалоговое окно закрывается.

Мы выполняли операции в безопасном блоке try, чтобы при наличии ошибки при вводе значений, программа вела себя достойно.

try

{

Data.Radius = Convert.ToInt32(textBox1.Text); Data.Square =

checkBox1.Checked;

Data.Length = checkBox2.Checked;

Close(); //закрываем окно

}

Если же произошел ввод неверных значений, например, буквы (вместо цифр), программа выдает ошибку (Рис. 2.4.6):

catch (FormatException)

{

MessageBox.Show("Неверный ввод данных!", "Error");

}

Рис. 2.4.6 - Ошибка

программа площадь длина окружность