using System.Diagnostics.Eventing.Reader; using System.Windows.Forms; namespace Calculator { internal static class Program { static Form1 form = new Form1(); static double valueA; static double valueB; static bool isSecondNumber = false; static bool answerGiven = false; static bool hasStoredAnwser = false; static double lastAnswer; static Operator selectedOperator; enum Operator { Add, Sub, Mult, Div } static void Main() { ApplicationConfiguration.Initialize(); InitButtons(); StartSelection(); Application.Run(form); } static private void InitButtons() { form.btn_input_0.Click += RegisterInput; form.btn_input_1.Click += RegisterInput; form.btn_input_2.Click += RegisterInput; form.btn_input_3.Click += RegisterInput; form.btn_input_4.Click += RegisterInput; form.btn_input_5.Click += RegisterInput; form.btn_input_6.Click += RegisterInput; form.btn_input_7.Click += RegisterInput; form.btn_input_8.Click += RegisterInput; form.btn_input_9.Click += RegisterInput; form.btn_input_add.Click += SelectAdd; form.btn_input_sub.Click += SelectSub; form.btn_input_mult.Click += SelectMult; form.btn_input_div.Click += SelectDiv; form.btn_next.Click += Next; form.btn_import_prev.Click += ImportPrevious; } static private void ShowOperators(bool value) { form.btn_input_add.Visible = value; form.btn_input_sub.Visible = value; form.btn_input_mult.Visible = value; form.btn_input_div.Visible = value; } static private void ShowNumbers(bool value) { form.btn_input_0.Visible = value; form.btn_input_1.Visible = value; form.btn_input_2.Visible = value; form.btn_input_3.Visible = value; form.btn_input_4.Visible = value; form.btn_input_5.Visible = value; form.btn_input_6.Visible = value; form.btn_input_7.Visible = value; form.btn_input_8.Visible = value; form.btn_input_9.Visible = value; form.btn_import_prev.Visible = value; } static private void SelectAdd(object sender, EventArgs e) { OperatorSelected(Operator.Add); } static private void SelectSub(object sender, EventArgs e) { OperatorSelected(Operator.Sub); } static private void SelectMult(object sender, EventArgs e) { OperatorSelected(Operator.Mult); } static private void SelectDiv(object sender, EventArgs e) { OperatorSelected(Operator.Div); } static private void OperatorSelected(Operator operation) { form.lbl_main.Text = "Ange tal 1"; ShowOperators(false); ShowNumbers(true); selectedOperator = operation; form.btn_next.Visible = false; } static private void StartSelection() { ShowOperators(true); isSecondNumber = false; answerGiven = false; form.lbl_main.Text = "Välj operation"; form.btn_import_prev.Enabled = hasStoredAnwser; } static private void RegisterInput(object sender, EventArgs e) { if (sender is Button b) { form.lbl_number.Text += b.Text; form.btn_next.Visible = true; } } static private void ImportPrevious(object sender, EventArgs e) { form.lbl_number.Text += lastAnswer.ToString(); form.btn_next.Visible = true; } static private void Next(object sender, EventArgs e) { if (answerGiven) { StartSelection(); return; } if (!isSecondNumber) { valueA = double.Parse(form.lbl_number.Text); form.lbl_main.Text = "Ange tal 2"; isSecondNumber = true; form.btn_next.Visible = false; } else { valueB = double.Parse(form.lbl_number.Text); Answer(); isSecondNumber = false; } form.lbl_number.Text = ""; } static private void Answer() { double value = 0; ShowOperators(false); ShowNumbers(false); if (selectedOperator == Operator.Add) value = valueA + valueB; else if (selectedOperator == Operator.Sub) value = valueA - valueB; else if (selectedOperator == Operator.Mult) value = valueA * valueB; else if (selectedOperator == Operator.Div) value = valueA / valueB; hasStoredAnwser = true; lastAnswer = value; form.btn_import_prev.Text = "Importera föregående svar" + " (" + value.ToString() + ")"; form.lbl_main.Text = "Ditt tal är " + value.ToString(); answerGiven = true; } } }