//обработку нажатия на кнопку = private void btnOperationEqual_Click(object sender, EventArgs e) { //отлавливаем не предусмотренный исключения try { //проверяем введена ли вторая дробь if ( (txtbIntegerPart.Text != "") && (txtbNumerator.Text != "") && (txtbDenominator.Text != "") ) { //запоминаем информацию о втрой дроби secondFraction.SetFraction(integerPart: Convert.ToInt32(txtbIntegerPart.Text), denominator: Convert.ToInt32(txtbDenominator.Text), numerator: Convert.ToInt32(txtbNumerator.Text)); //запоминаем необходимую операцию operation = txtbOperation.Text; switch (operation) { //складываем два числа и кладем результат в Fraction result case "+": result = firstFraction.OperationPlus(secondFraction); break; //вычитаем два числа и кладем результат в Fraction result case "-": result = firstFraction.OperationMinus(secondFraction); break; //делим два числа и кладем результат в Fraction result case "/": result = firstFraction.OperationDivision(secondFraction); break; //перемнодаем два числа и кладем результат в Fraction result case "*": result = firstFraction.OperationMultiplication(secondFraction); break; default: label1.Text = "unknown operation"; break; } //очищаем информацию об операции operation = ""; //чистим textbox операции txtbOperation.Text = ""; //выводим результат txtbIntegerPart.Text = result.IntegerPart.ToString(); txtbNumerator.Text = result.Numerator.ToString(); txtbDenominator.Text = result.Denominator.ToString(); //чистим информацию о дробях firstFraction.CleanFraction(); secondFraction.CleanFraction(); result.CleanFraction(); //двигаем фокус обратно на textbox целой части lastFocus = txtbIntegerPart; } } catch (Exception b) { label1.Text = b.ToString(); } }
//ввод информации об операции private void txtbOperation_KeyPress(object sender, KeyPressEventArgs e) { //отлавливаем случайные ошибки try { //запрещаем все кроме символов операции if ((e.KeyChar != '.') && ((e.KeyChar == '+') || (e.KeyChar == '-') || (e.KeyChar == '/') || (e.KeyChar == '*')) && (txtbOperation.Text.Length == 0)) { return; } if (e.KeyChar == '.') { e.Handled = true; return; } //разрешаем удаление if ((e.KeyChar == '\b') || (e.KeyChar == (char)Keys.Delete)) { return; } else { e.Handled = true; } //возможность введения второй дроби после введения операции первой дроби и нажатия enter if ((txtbOperation.Text != "") && (e.KeyChar == (char)Keys.Enter)) { if ( (firstFraction.Numerator == 0) && (firstFraction.IntegerPart == 0) && (txtbIntegerPart.Text != "") && (txtbNumerator.Text != "") && (txtbDenominator.Text != "") ) { //создаем новую дробь firstFraction.SetFraction(integerPart: Convert.ToInt32(txtbIntegerPart.Text), denominator: Convert.ToInt32(txtbDenominator.Text), numerator: Convert.ToInt32(txtbNumerator.Text)); //чистим текст боксы txtbIntegerPart.Text = ""; txtbNumerator.Text = ""; txtbDenominator.Text = ""; //двиагаем фокус на textbox целой части txtbIntegerPart.Focus(); lastFocus = txtbIntegerPart; } else { btnOperationEqual.Focus(); } } } catch (Exception InputE) { label1.Text = "Ops you broke some thing"; } }