Files
Calculator/Program.cs
2025-09-29 10:03:20 +02:00

177 lines
5.4 KiB
C#
Raw Blame History

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<65>ende svar" + " (" + value.ToString() + ")";
form.lbl_main.Text = "Ditt tal <20>r " + value.ToString();
answerGiven = true;
}
}
}