В задачу о вычислении площади квадрата внесем изменения.
Сделаем так, чтобы в поле ввода можно было ввести только действительное число. То есть, можно ввести любые цифры и только одну запятую. Если нажимать клавиши с буквами или другими символами, то в поле этот символ не выводится.
Если поле не заполнено, то при нажатии на кнопку «Вычислить», в отдельное окно должно выводиться сообщение «Введите сторону».
Изменим код обработчика Click. Будем использовать инструкцию try-catch.
В блок try перенесем все операторы, которые считывают информацию из текстового поля textBox1, вычисляют площадь квадрата и выводят ее в элемент label5 (весь старый код обработчика).
Операторы блока catch будут выполнятся, если поле не заполнено. Поэтому там будет вывод сообщения «Введите сторону». Это сообщение выведем в отдельное окошко методом MessageBox.
Обработчик KeyPress добавляется после обработчика Click.
Код обработчика события KeyPress:
В коде:
Символ с- знак ASCII, нажатой клавиши.
Строка tx – текст, который уже введен в текстовое поле.
Число n – номер позиции, в которой в уже выведенном тексте находится запятая. Если запятых нет, то число равно -1.
Следущая строка кода означает: если нажата не цифра или если нажата запятая, а запятая уже есть, то системная обработка события KeyPress отменяется с помощью свойства Handled (символ в поле не выводится). То есть e.Handled = true;
Проверим работу программы. Введем сторону=3,6.
Уще раз проверим работу программы. Оставим поле ввода пустым и нажмем кнопку.
Появится сообщение:
При нажатии на любые клавиши кроме цифр и одной запятой, в поле «Введите сторону» ничего не будет выводится.
А,Б,С – вещественные числа, к1,к2,к3 - целые числа. Вычислить значение по формуле - А*Б*С и с учетом коэффициентам к1,к2,к3 по формуле - А*к1+Б*к2+С*к3
Выполнить контроль ввода данных и контроль заполнения полей.
При построении формы дадим полям имена: A, B, C, k1, k2, k3 и AB (для результата). Имена кнопок и меток оставим стандартными.
Для того чтобы несколько объектов при определенном событии обрабатывались одним обработчиком, нужно для каждого объекта для одного и того же события (у нас KeyPress) указать имя одного и того же обработчика.
Когда для одного поля обработчик события уже установлен, для остальных полей его можно выбрать из списка.