private void OperatorButtonClick(object sender, RoutedEventArgs e) { displayTextBox.FontSize = 50; double val; if (double.TryParse(displayTextBox.Text, out val) == false) { CButtonClick(sender, e); return; } pointActivated = false; pressedButton.Background = Brushes.Gray; currentNumber = double.Parse(displayTextBox.Text); (sender as Button).Background = Brushes.White; pressedButton = sender as Button; if ((sender as Button).Name == "equalButton") { (sender as Button).Background = Brushes.Gray; if (operationWaiting == true && operatorPressed == false) { try { previousNumber = operatorSymbol.PerformBinaryOperation(previousNumber, currentNumber); } catch (ArithmeticException exception) { displayTextBox.FontSize = 30; displayTextBox.Text = exception.Message; return; } operatorSymbol.OperatorProperty = Operator.OperatorSymbol.None; operationWaiting = false; equalPressed = true; displayTextBox.Text = previousNumber.ToString(); if (digitGrouping == true) { string stringDecimal = ""; if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringDecimal = displayTextBox.Text.Substring(displayTextBox.Text.IndexOf(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)); } double numberOnDisplay = double.Parse(displayTextBox.Text); int number = (int)numberOnDisplay; string stringToDisplay = number.ToString("N", CultureInfo.CurrentCulture); if (stringToDisplay.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00")) { stringToDisplay = stringToDisplay.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00", ""); } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringToDisplay += stringDecimal; } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator) && stringToDisplay[stringToDisplay.Length - 1] == '0') { stringToDisplay = stringToDisplay.Substring(0, stringToDisplay.Length - 1); } displayTextBox.Text = stringToDisplay; } else { displayTextBox.Text += (sender as Button).Content.ToString(); double number = double.Parse(displayTextBox.Text); displayTextBox.Text = number.ToString("G"); } return; } } if (unaryOperation.Contains((sender as Button).Name)) { (sender as Button).Background = Brushes.Gray; if (operationWaiting == true && operatorPressed == false) { try { previousNumber = operatorSymbol.PerformBinaryOperation(previousNumber, currentNumber); displayTextBox.Text = previousNumber.ToString(); if (digitGrouping == true) { string stringDecimal = ""; if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringDecimal = displayTextBox.Text.Substring(displayTextBox.Text.IndexOf(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)); } double numberOnDisplay = double.Parse(displayTextBox.Text); int number = (int)numberOnDisplay; string stringToDisplay = number.ToString("N", CultureInfo.CurrentCulture); if (stringToDisplay.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00")) { stringToDisplay = stringToDisplay.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00", ""); } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringToDisplay += stringDecimal; } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator) && stringToDisplay[stringToDisplay.Length - 1] == '0') { stringToDisplay = stringToDisplay.Substring(0, stringToDisplay.Length - 1); } displayTextBox.Text = stringToDisplay; } else { displayTextBox.Text += (sender as Button).Content.ToString(); double number = double.Parse(displayTextBox.Text); displayTextBox.Text = number.ToString("G"); } } catch (ArithmeticException exception) { displayTextBox.FontSize = 30; displayTextBox.Text = exception.Message; } return; } previousNumber = currentNumber; operatorSymbol.DetectOperator((sender as Button).Name); try { previousNumber = operatorSymbol.PerformUnaryOperation(previousNumber); displayTextBox.Text = previousNumber.ToString(); if (digitGrouping == true) { string stringDecimal = ""; if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringDecimal = displayTextBox.Text.Substring(displayTextBox.Text.IndexOf(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)); } double numberOnDisplay = double.Parse(displayTextBox.Text); int number = (int)numberOnDisplay; string stringToDisplay = number.ToString("N", CultureInfo.CurrentCulture); if (stringToDisplay.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00")) { stringToDisplay = stringToDisplay.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00", ""); } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringToDisplay += stringDecimal; } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator) && stringToDisplay[stringToDisplay.Length - 1] == '0') { stringToDisplay = stringToDisplay.Substring(0, stringToDisplay.Length - 1); } displayTextBox.Text = stringToDisplay; } else { displayTextBox.Text += (sender as Button).Content.ToString(); double number = double.Parse(displayTextBox.Text); displayTextBox.Text = number.ToString("G"); } } catch (ArithmeticException exception) { displayTextBox.FontSize = 30; displayTextBox.Text = exception.Message; return; } } currentNumber = double.Parse(displayTextBox.Text); if (operationWaiting == true && operatorPressed == false) { try { previousNumber = operatorSymbol.PerformBinaryOperation(previousNumber, currentNumber); displayTextBox.Text = previousNumber.ToString(); if (digitGrouping == true) { string stringDecimal = ""; if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringDecimal = displayTextBox.Text.Substring(displayTextBox.Text.IndexOf(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)); } double numberOnDisplay = double.Parse(displayTextBox.Text); int number = (int)numberOnDisplay; string stringToDisplay = number.ToString("N", CultureInfo.CurrentCulture); if (stringToDisplay.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00")) { stringToDisplay = stringToDisplay.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + "00", ""); } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { stringToDisplay += stringDecimal; } if (displayTextBox.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator) && stringToDisplay[stringToDisplay.Length - 1] == '0') { stringToDisplay = stringToDisplay.Substring(0, stringToDisplay.Length - 1); } displayTextBox.Text = stringToDisplay; } else { displayTextBox.Text += (sender as Button).Content.ToString(); double number = double.Parse(displayTextBox.Text); displayTextBox.Text = number.ToString("G"); } } catch (ArithmeticException exception) { displayTextBox.FontSize = 30; displayTextBox.Text = exception.Message; } operatorSymbol.DetectOperator((sender as Button).Name); operationWaitingFirst = true; } else if (operatorPressed == false) { previousNumber = currentNumber; operatorSymbol.DetectOperator((sender as Button).Name); currentNumber = 0; operationWaiting = true; operationWaitingFirst = true; } else { operatorSymbol.DetectOperator((sender as Button).Name); currentNumber = 0; operationWaiting = true; operationWaitingFirst = true; } operatorPressed = true; }