예제 #1
0
        //обработку нажатия на кнопку =
        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();
            }
        }
예제 #2
0
        //ввод информации об операции
        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";
            }
        }