private void EngineerGrid_Click(object sender, RoutedEventArgs e) { // обработчик работает только для кнопок Button btn = e.Source as Button; // Если не кнопка if (btn == null) { return; } string value; try { value = btn.Content.ToString(); } catch { StatusBarChangingDelegate update = new StatusBarChangingDelegate(StatusBarChanging); update("Error on buttons"); return; } // Для кнопок у которых есть значение (контент) if (String.IsNullOrEmpty(value)) { return; } EngineerResultator(value); return; }
private void EngineerMode_Click(object sender, RoutedEventArgs e) { if (!isEngineerMode) { StatusBarChangingDelegate update = new StatusBarChangingDelegate(StatusBarChanging); update("Switched to Engineer Mode"); ModeSwitcher(); } return; }
private void ActivityGrid_Click(object sender, RoutedEventArgs e) { // обработчик работает только для кнопок Button btn = e.Source as Button; // Если не кнопка if (btn == null) { return; } // Для кнопок у которых есть значение (контент) string value; try { value = btn.Content.ToString(); } catch { StatusBarChangingDelegate update = new StatusBarChangingDelegate(StatusBarChanging); update("Error on buttons"); return; } if (String.IsNullOrEmpty(value)) { return; } //Свичи switch (value) { //Очистка последнего символа case "Del": if (!String.IsNullOrEmpty(CalcTextBox.Text)) { CalcTextBox.Text = CalcTextBox.Text.Substring(0, CalcTextBox.Text.Length - 1); } if (String.IsNullOrEmpty(CalcTextBox.Text)) { CalcTextBox.Text += '0'; } break; //Очистка поля case "C": CalcTextBox.Text = "0"; memoryValue = 0; memoryOpreation = ""; memorised = false; break; default: ActivityResultator(value); break; } return; }
private void NumbersGrid_Click(object sender, RoutedEventArgs e) { // обработчик работает только для кнопок Button btn = e.Source as Button; // Если не кнопка if (btn == null) { return; } // Для кнопок у которых есть значение (контент) string value; try { value = btn.Content.ToString(); } catch { StatusBarChangingDelegate update = new StatusBarChangingDelegate(StatusBarChanging); update("Error on buttons"); return; } if (String.IsNullOrEmpty(value)) { return; } //Свичи switch (value) { case "+/-": try { double i = Double.Parse(CalcTextBox.Text); i = (-i); CalcTextBox.Text = i.ToString(); } catch { CalcTextBox.Text = "Error"; } break; case ",": if (!CalcTextBox.Text.Contains('.')) { CalcTextBox.Text += "."; } break; // добавялем новое значение в текстовое поле и удаляем стартовый 0 default: CalcTextBox.Text = CalcTextBox.Text.TrimStart('0') + value; break; } }
private void EngineerResultator(string operation) { if (operation == "Sqrt") { try { CalcTextBox.Text = Math.Sqrt(Double.Parse(CalcTextBox.Text)).ToString(); } catch { CalcTextBox.Text = "Error"; } return; } else if (operation == "x^2") { CalcTextBox.Text = (Double.Parse(CalcTextBox.Text) * Double.Parse(CalcTextBox.Text)).ToString(); return; } else if (operation == "x^y" && !memorised) { memoryValue = double.Parse(CalcTextBox.Text); memoryOpreation = operation; memorised = true; CalcTextBox.Text = "0"; return; } else if (operation == "x^y" && memorised) { double j; switch (memoryOpreation) { case "x^y": j = Math.Pow(memoryValue, double.Parse(CalcTextBox.Text)); memoryValue = j; break; case "/": j = memoryValue / double.Parse(CalcTextBox.Text); memoryValue = j; break; case "*": j = memoryValue * double.Parse(CalcTextBox.Text); memoryValue = j; break; case "+": j = memoryValue + double.Parse(CalcTextBox.Text); memoryValue = j; break; case "-": j = memoryValue * double.Parse(CalcTextBox.Text); memoryValue = j; break; default: CalcTextBox.Text = "Error"; return; } memoryOpreation = operation; CalcTextBox.Text = "0"; return; } else if (operation == "1/x") { CalcTextBox.Text = (1 / Double.Parse(CalcTextBox.Text)).ToString(); return; } else if (operation == "3√x") { CalcTextBox.Text = Math.Pow(Double.Parse(CalcTextBox.Text), (1.0 / 3)).ToString(); return; } else if (operation == "x!") { int i = 0; try { i = int.Parse(CalcTextBox.Text); } catch { CalcTextBox.Text = "Error"; StatusBarChangingDelegate update = new StatusBarChangingDelegate(StatusBarChanging); update("Only round allowed"); } if (factorialWorker.IsBusy != true) { // Start the asynchronous operation. factorialWorker.RunWorkerAsync(CalcTextBox.Text); } } else { return; } }