zoukankan      html  css  js  c++  java
  • Winform——计算器

    namespace 计算器2._0
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面(用来存储判断是否刚刚点过运算符)
            private string Biaodashi; //记录运算符之前的表达式(在第一栏)
            private decimal Sum;//记录之前计算的结果(在第二栏)
            private string Preyunsuanfu;//记录之前的运算符
            private decimal d2;//存下面的数的成员变量
    
    
            private void button32_Click(object sender, EventArgs e)//其它数字按钮
            {
                Button btn = (Button) sender; //sender为各自对应的类,这里为对应每个按钮
                if (Isok) //如果第一次进入界面或者之前点过运算符
                {
                    textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容
                    Isok = false;//将Isok改成false的意思:不是刚刚点完运算符了,也不是刚进入界面,是为了进入else
                    d2 = decimal.Parse(textBox2.Text);
                }
                else
                {
                    textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
                }
            }
    
            private void button36_Click(object sender, EventArgs e)//0按钮
            {
                Button btn = (Button)sender; //sender为各自对应的类,这里为对应每个按钮
                if (Isok) //如果第一次进入界面或者之前点过运算符
                {
                    textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容
                    
                }
                else
                {
                    textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
                }
            }
    
            private void button44_Click(object sender, EventArgs e)//运算符
            {
                Button btn = (Button)sender;//sender为各自对应的类,这里为对应每个按钮
                string yunsuanfu = btn.Text; //将按钮上的内容赋值给yunsuanfu;
                if (Preyunsuanfu == null)
                {
                    Biaodashi =  textBox2.Text; 
                    Sum = decimal.Parse(textBox2.Text);
                }
                else
                {
                    if (!Isok) //如果刚刚点过运算符,这一块也就不需要运算了.反之则需要运算.
                    {   // !Isok 代表的是刚刚没点过运算符,这样才会运算下面的代码.
                        if (Preyunsuanfu == "+") //如果刚才的运算符是加号
                        {
                            Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
                        }
                        if (Preyunsuanfu == "-")
                        {
                            Sum = Sum - decimal.Parse(textBox2.Text);
                        }
                        if (Preyunsuanfu == "*")
                        {
                            Sum = Sum * decimal.Parse(textBox2.Text);
                        }
                        if (Preyunsuanfu == "/")
                        {
                            Sum = Sum / decimal.Parse(textBox2.Text);
                        }
                        if (Preyunsuanfu == "%")
                        {
                            Sum = Sum % decimal.Parse(textBox2.Text);
                        }
                        Biaodashi = Biaodashi + Preyunsuanfu + textBox2.Text;//之前有运算符的话  第一栏的值变为  之前的表达式+刚才点进去的运算符+刚才输入的值
                        textBox2.Text = Sum.ToString(); //第二栏的值变为结果
                    }
                
                }
                textBox1.Text = Biaodashi + yunsuanfu;//第一栏显示的文本为表达式+当前输入的运算符
                Preyunsuanfu = yunsuanfu;//将yunsuanfu的值赋给   记录上一次的运算符;
                Isok = true; //只要Isok是ture,就会把刚才的值清空重新输入现在按钮上的值
    
            }
    
            private void button8_Click(object sender, EventArgs e) //清空键
            {   //初始化所有状态
                textBox1.Text = "";
                textBox2.Text = "0";
                Isok = true;
                Preyunsuanfu = null;
                Sum = 0;
                Biaodashi = "";
                d2 = 0;
            }
    
            private void button6_Click(object sender, EventArgs e)//撤销键
            {
                if (!Isok) //如果刚刚没点过运算符才能执行下面这一步
                {
                    if (textBox2.Text.Length == 1)//如果第二栏的文本长度为1
                    {
                        textBox2.Text = "0"; //点击撤销就会变成0
                        Isok = true;//只要一撤成0,就将Isok改成true.  这样0才不会累加,相当于重新进入界面。
                    }
                    else
                    {
                        textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
                    }
                }
               
            }
    
            private void button28_Click(object sender, EventArgs e) //小数点
            { 
                if(!textBox2.Text.Contains("."))//之前有小数点了便不会执行下一步
                {
                    textBox2.Text = textBox2.Text + ".";
                    Isok = false;//不会清空第二行
                }
            }
          // private bool d3 = true;//是否点过其他数字
            private void button30_Click(object sender, EventArgs e) //等号    
           {
               Button btn = (Button)sender;
                
                textBox1.Text = ""; //第一栏为空 
               
                //计算之前的结果
                if (Preyunsuanfu == "+") //如果刚才的运算符是加号
                {
                    Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
                }
                if (Preyunsuanfu == "-")
                {
                    Sum = Sum - decimal.Parse(textBox2.Text);
                }
                if (Preyunsuanfu == "*")
                {
                    Sum = Sum * decimal.Parse(textBox2.Text);
                }
                if (Preyunsuanfu == "/")
                {
                    Sum = Sum / decimal.Parse(textBox2.Text);
                }
                if (Preyunsuanfu == "%")
                {
                    Sum = Sum % decimal.Parse(textBox2.Text);
                }
              
                textBox2.Text = Sum.ToString();//第二栏显示为之前的结果
    
                
                //初始化对象
                Isok = true;
                Biaodashi = "";
                Preyunsuanfu = null;
              
                Sum = d2+decimal.Parse(textBox2.Text);
    
                //还没有继续点等号出现的情况
               
                
            }
    
            private void button9_Click(object sender, EventArgs e)  //正负号
            {
                if (!Isok) //不是刚点过运算符也不是刚进入界面,即如果是结果的话就不会执行下面的代码
                {
                    if (decimal.Parse(textBox2.Text) > 0)
                    {
                        textBox2.Text = "-" + textBox2.Text;//如果大于零就添加负号
                    }
                    else
                    {
                        textBox2.Text = textBox2.Text.Substring(1);//如果小于零就把负号去掉
                    }
                }
            }
            private string m;
            private void button4_Click(object sender, EventArgs e) //M+  将textbox2的值存到了M+里面
            {
                if (textBox2.Text == "0")
                {
    
                }
                else
                {
                    textBox3.Text = "M";
                }
                m = textBox2.Text;
            }
    
            private void button2_Click(object sender, EventArgs e)//MR 点击MR显示M+保存的数;
            {
                textBox2.Text = m;
            }
    
            private void button5_Click(object sender, EventArgs e)//M- 之前M+保存的数减去你输入的数
            {
                if(!Isok)//不是刚刚点过运算符
                {
                Sum=decimal.Parse(m)-decimal.Parse(textBox2.Text);
                textBox2.Text = Sum.ToString();
                }
            }
    
    
            private double ss;
            private void button10_Click(object sender, EventArgs e)//根号
            {
               ss = Math.Sqrt(double.Parse(textBox2.Text));
               textBox1.Text = "sqrt" + "(" + textBox2.Text + ")";
               textBox2.Text = ss.ToString();
               Isok = true;
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
            private double fenshu;
            private void button41_Click(object sender, EventArgs e)//几分之几
            {
                fenshu = 1 / double.Parse(textBox2.Text);  
                textBox1.Text = "reciproc" + "("+textBox2.Text+")";//第一栏显示的
                textBox2.Text = fenshu.ToString();//第二栏显示的
              
            }
    
            private void button7_Click(object sender, EventArgs e)//CE键和C键功能一样
            {
                //初始化所有状态
                textBox1.Text = "";
                textBox2.Text = "0";
                Isok = true;
                Preyunsuanfu = null;
                Sum = 0;
                Biaodashi = "";
            }
    
            private void button1_Click(object sender, EventArgs e) //MC 清空M+保存的值
            {
                textBox3.Text = "";
                m = "0";
            }
    
        }
    }
  • 相关阅读:
    Word操作技巧
    x264命令行参数解释
    [翻译]TCP穿透NAT技术
    VC6随身笔记
    如何开启 Windows 2000 Server 上的远程桌面功能
    MFC基础知识整理
    用Windows Media编码器建网络电视直播站
    在线播放器代码大全
    关于嵌入式系统方向
    老外搜集的Windows快捷键大全(2007110更新)
  • 原文地址:https://www.cnblogs.com/lk-kk/p/4538249.html
Copyright © 2011-2022 走看看