Загрузка данных


using System;
using System.Globalization;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        decimal firstNumber = 0;
        string operation = "";
        bool newNumber = true;

        public Form1()
        {
            InitializeComponent();

            btn0.Click += Number_Click;
            btn1.Click += Number_Click;
            btn2.Click += Number_Click;
            btn3.Click += Number_Click;
            btn4.Click += Number_Click;
            btn5.Click += Number_Click;
            btn6.Click += Number_Click;
            btn7.Click += Number_Click;
            btn8.Click += Number_Click;
            btn9.Click += Number_Click;

            btnAdd.Click += Operation_Click;
            btnSub.Click += Operation_Click;
            btnMul.Click += Operation_Click;
            btnDiv.Click += Operation_Click;

            btnEquals.Click += Equals_Click;
            btnC.Click += Clear_Click;
            btnCE.Click += ClearEntry_Click;
            btnBack.Click += Backspace_Click;
            btnSign.Click += Sign_Click;
            btnPercent.Click += Percent_Click;
            btnDot.Click += Dot_Click;

            display.Text = "0";
        }

        decimal GetNumber()
        {
            return decimal.Parse(
                display.Text,
                CultureInfo.GetCultureInfo("ru-RU"));
        }

        void Number_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;

            if (newNumber || display.Text == "0")
                display.Text = button.Text;
            else
                display.Text += button.Text;

            newNumber = false;
        }

        void Operation_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;

            firstNumber = GetNumber();

            switch (button.Name)
            {
                case "btnAdd": operation = "+"; break;
                case "btnSub": operation = "-"; break;
                case "btnMul": operation = "*"; break;
                case "btnDiv": operation = "/"; break;
            }

            newNumber = true;
        }

        void Equals_Click(object sender, EventArgs e)
        {
            decimal secondNumber = GetNumber();
            decimal result = 0;

            switch (operation)
            {
                case "+": result = firstNumber + secondNumber; break;
                case "-": result = firstNumber - secondNumber; break;
                case "*": result = firstNumber * secondNumber; break;

                case "/":
                    if (secondNumber == 0)
                    {
                        display.Text = "Ошибка";
                        operation = "";
                        newNumber = true;
                        return;
                    }

                    result = firstNumber / secondNumber;
                    break;

                default:
                    return;
            }

            display.Text = result.ToString(
                CultureInfo.GetCultureInfo("ru-RU"));

            operation = "";
            newNumber = true;
        }

        void Clear_Click(object sender, EventArgs e)
        {
            display.Text = "0";
            firstNumber = 0;
            operation = "";
            newNumber = true;
        }

        void ClearEntry_Click(object sender, EventArgs e)
        {
            display.Text = "0";
            newNumber = true;
        }

        void Backspace_Click(object sender, EventArgs e)
        {
            if (newNumber)
                return;

            if (display.Text.Length > 1)
                display.Text = display.Text.Substring(
                    0, display.Text.Length - 1);
            else
                display.Text = "0";
        }

        void Sign_Click(object sender, EventArgs e)
        {
            display.Text = (-GetNumber()).ToString(
                CultureInfo.GetCultureInfo("ru-RU"));
        }

        void Percent_Click(object sender, EventArgs e)
        {
            display.Text = (GetNumber() / 100).ToString(
                CultureInfo.GetCultureInfo("ru-RU"));

            newNumber = true;
        }

        void Dot_Click(object sender, EventArgs e)
        {
            if (newNumber)
            {
                display.Text = "0,";
                newNumber = false;
            }
            else if (!display.Text.Contains(","))
            {
                display.Text += ",";
            }
        }
    }
}