码迷,mamicode.com
首页 > Windows程序 > 详细

Winform——计算器(大部分功能)

时间:2015-05-28 00:15:15      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

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 void button32_Click(object sender, EventArgs e)//其它数字按钮
        {
            Button btn = (Button) sender; //sender为各自对应的类,这里为对应每个按钮
            if (Isok) //如果第一次进入界面或者之前点过运算符
            {
                textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容
                Isok = false;//将Isok改成false的意思:不是刚刚点完运算符了,也不是刚进入界面,是为了进入else
            }
            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 = 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 = "";
        }

        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 == "0")//如果是零的话
            {
                textBox2.Text = "0." ;//就变成0.
                Isok = false;//将Isok改成false是为了本来是0的话点了小数点之后还可以再继续在小数点后面输入别的数字,而不是清空
            }
            if(!Isok&&!textBox2.Text.Contains("."))//如果显示的是结果框(即刚点过运算符便不让点),便不会执行下一步;并且刚刚点过. ,也不会执行
            {
                textBox2.Text = textBox2.Text + ".";
            }
        }

        private void button30_Click(object sender, EventArgs e) //等号
        {   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 = 0;

            //还没有继续点等号出现的情况
           
            
        }

        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);//如果小于零就把负号去掉
                }
            }
        }
    }
}

 

Winform——计算器(大部分功能)

标签:

原文地址:http://www.cnblogs.com/lk-kk/p/4534684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!