⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 C#计算器 用来计算简单的小计算!
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Calculator
{
    public partial class frmCalculator : Form
    {
        public frmCalculator()
        {
            InitializeComponent();
        }
        private Operation oper = null;
        //数据操作开关
        private bool Switch = false;
        //输入的第一个数
        private double num1 = 0;
        //输入的第二个数 
        private double num2 = 0;
        //num1 和 num2 的区分
        private bool numDis = false;
        //判断输入的第一个数是否是多位数
        private bool Multiplace1 = false;
        //判断输入的第二个数是否是多位数
        private bool Multiplace2 = false;

       
        /// <summary>
        /// 处理输入的数据
        /// </summary>
        /// <param name="defaultNum">当前显示的数据</param>
        /// <param name="number">要加入的数据</param>
        /// <returns>处理后的数据</returns>
        private double dateSwitch(string defaultNum, string number)
        {
            string _return = String.Empty;
            if (defaultNum != String.Empty || defaultNum != "0")
                _return = defaultNum;
            switch (Switch)
            {
                case false:
                    _return += number.Trim();
                    break;
                case true:
                    _return = number.Trim();
                    break;
            }
            return double.Parse(_return.Trim());
        }

        /// <summary>
        /// 判断输入的是第一个数还是第二个数
        /// </summary>
        /// <param name="defaultNum">当前显示的数据</param>
        /// <param name="number">要加入的数据</param>
        /// <returns>处理后的数据</returns>
        private void Judgement(string defaultNum,string number)
        {
            switch (numDis)
            {
                case false:
                    //输入的第一位数是单位数
                    if (!Multiplace1)
                    {
                        txtOperation.Text = String.Empty;
                        Multiplace1 = true;
                    }
                    //输入的第一位数是多位数
                    else
                        txtOperation.Text = defaultNum;
                    num1 = dateSwitch(txtOperation.Text.Trim(), number);
                    txtOperation.Text = num1.ToString();
                    break;
                case true:
                    //输入的第二位数是单位数
                    if (!Multiplace2)
                    {
                        txtOperation.Text = String.Empty;
                        Multiplace2 = true;
                    }
                    //输入的第二位数是多位数
                    else
                        txtOperation.Text = defaultNum;
                    num2 = dateSwitch(txtOperation.Text.Trim(), number);
                    txtOperation.Text = num2.ToString();
                    break;
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            txtOperation.Text = "0";
        }

        private void btnOperate_Click(object sender, EventArgs e)
        {
            Button b = sender as Button;
            string id = b.Name;
            switch(id)
            {
                case "btnAdd":
                    oper = OperationFactory.CreateOperation("+");
                    break;
                case "btnSubtraction":
                    oper = OperationFactory.CreateOperation("-");
                    break;
                case "btnMultiplication":
                    oper = OperationFactory.CreateOperation("*");
                    break;
                case "btnDivision":
                    oper = OperationFactory.CreateOperation("/");
                    break;
                case "btnDivRem":
                    oper = OperationFactory.CreateOperation("%");
                    break;
            }
            numDis = true;
            Switch = false;
        }

        

        private void btnSqrt_Click(object sender, EventArgs e)
        {
            oper = OperationFactory.CreateOperation("sqrt");
            oper.StrNumA = num1;
            txtOperation.Text = oper.GetResult().ToString().Trim();
            num1 = double.Parse(txtOperation.Text.Trim());
            numDis = false;
            Switch = false;
            Multiplace1 = false;
            Multiplace2 = false;
        }

        private void btnSqua_Click(object sender, EventArgs e)
        {
            oper = OperationFactory.CreateOperation("squa");
            oper.StrNumA = num1;
            txtOperation.Text = oper.GetResult().ToString().Trim();
            num1 = double.Parse(txtOperation.Text.Trim());
            numDis = false;
            Switch = false;
            Multiplace1 = false;
            Multiplace2 = false;
        }

        private void btnRec_Click(object sender, EventArgs e)
        {
            oper = OperationFactory.CreateOperation("rec");
            oper.StrNumA = num1;
            txtOperation.Text = oper.GetResult().ToString().Trim();
            num1 = double.Parse(txtOperation.Text.Trim());
            numDis = false;
            Switch = false;
            Multiplace1 = false;
            Multiplace2 = false;
        }

        private void btnEqual_Click(object sender, EventArgs e)
        {
            oper.StrNumA = num1;
            oper.StrNumB = num2;
            txtOperation.Text = oper.GetResult().ToString().Trim();
            numDis = false;
            Switch = false;
            Multiplace1 = false;
            Multiplace2 = false;
            num1 = double.Parse(txtOperation.Text.Trim());
        }

        private void btn_Click(object sender, EventArgs e)
        {
            Button b = sender as Button;
            string id = b.Name;
            switch (id)
            {
                case "btn1":
                    Judgement(txtOperation.Text.Trim(), "1");
                    break;
                case "btn2":
                    Judgement(txtOperation.Text.Trim(), "2");
                    break;
                case "btn3":
                    Judgement(txtOperation.Text.Trim(), "3");
                    break;
                case "btn4":
                    Judgement(txtOperation.Text.Trim(), "4");
                    break;
                case "btn5":
                    Judgement(txtOperation.Text.Trim(), "5");
                    break;
                case "btn6":
                    Judgement(txtOperation.Text.Trim(), "6");
                    break;
                case "btn7":
                    Judgement(txtOperation.Text.Trim(), "7");
                    break;
                case "btn8":
                    Judgement(txtOperation.Text.Trim(), "8");
                    break;
                case "btn9":
                    Judgement(txtOperation.Text.Trim(), "9");
                    break;
                case "btn0":
                    Judgement(txtOperation.Text.Trim(), "0");
                    break;
            }

        }

        private void btnDot_Click(object sender, EventArgs e)
        {
            int dotNum = txtOperation.Text.IndexOf(".");
            if (dotNum < 0)
            {
                txtOperation.Text += ".";
            }
        }

        private void btnC_Click(object sender, EventArgs e)
        {
            txtOperation.Text = "0";
            oper = null;
            numDis = false;
            Switch = false;
            Multiplace1 = false;
            Multiplace2 = false;
            num1 = 0;
            num2 = 0;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -