2
Contributors
1
Reply
6
Views
4 Years
Discussion Span
Last Post by Mitja Bonca
0

Here is my old calculator code:
PS: Add controls (buttons and textboxes on form - check which one are inside the code)

    public partial class Form1 : Form
    {
        decimal num1, total;
        int operation;
        bool bNewCalc;
        bool bNextNum;

        public Form1()
        {
            InitializeComponent();
            display.Text = string.Empty;
            textBox1.Text = "0";
            textBox1.TabStop = false;

            Button[] btns = new Button[] { button0, button1, button2, button3, button4, 
                                           button5, button6, button7, button8, button9, };
            foreach (Button  btn in btns)
                btn.Click += new EventHandler(Buttons_Click);
        }

        enum MathOperators
        {
            Multiplication = 0, // *
            Division = 1,       // /
            Addition,           // +
            Subtraction         // -
        }

        private void Buttons_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            if (btn != null)
            {
                if (bNextNum)
                {
                    textBox1.Text = btn.Text;
                    bNextNum = false;
                }
                else
                {
                    if (textBox1.Text.Equals("0") || bNewCalc)
                    {
                        textBox1.Text = btn.Text;
                        bNewCalc = false;
                    }
                    else
                        textBox1.Text += btn.Text;                    
                }
                num1 = int.Parse(textBox1.Text);
            }
        }

        private void buttonMul_Click(object sender, EventArgs e)
        {
            SetOnOperation("*");
            operation = (int)MathOperators.Multiplication;
        }

        private void buttonDiv_Click(object sender, EventArgs e)
        {
            SetOnOperation("/");
            operation = (int)MathOperators.Division;
        }

        private void buttonAdd_Click(object sender, EventArgs e)
        {           
            SetOnOperation("+");
            operation = (int)MathOperators.Addition;
        }

        private void buttonMin_Click(object sender, EventArgs e)
        {           
            SetOnOperation("-");
            operation = (int)MathOperators.Subtraction;           
        }

        private void SetOnOperation(string sign)
        {
            if (!bNextNum)
            {
                if (bNewCalc)
                    display.Text = String.Format("{0} {1}", total.ToString(), sign);
                else
                {
                    display.Text += String.Format("{0} {1} ", num1, sign);
                    bNextNum = true;
                    if (!total.Equals(0))
                    {
                        DoCalculation();
                        textBox1.Text = total.ToString();
                    }
                    else
                        total = decimal.Parse(textBox1.Text);
                }
            }
            else
                display.Text = String.Format("{0} {1} ", display.Text.Remove(display.Text.Length - 3, 3), sign);
        }

        private void buttonEquals_Click(object sender, EventArgs e)
        {
            DoCalculation();
            textBox1.Text = total.ToString();
            display.Text = string.Empty;
            bNewCalc = true;           
        }

        private void DoCalculation()
        {
            try
            {
                switch (operation)
                {
                    case 0:
                        total = total * num1;
                        break;
                    case 1:
                        total = total / num1;
                        break;
                    case 2:
                        total = total + num1;
                        break;
                    case 3:
                        total = total - num1;
                        break;
                }
            }
            catch 
            {
                throw new DivideByZeroException();
            }
        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            textBox1.Text = "0";
            display.Text = string.Empty;
            bNextNum = false;
            total = 0;
            num1 = 0;
        }
    }
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.