winfrom实现简单计算器V2版本

前面,使用winform实现了个简单的计算器,今天,再来给大家看一个稍微复杂点的计算器,效果图如下:
在这里插入图片描述
在这里插入图片描述
包括归零,退格,加减乘除都已经实现,如果想要继续扩展的可以在稍微改改即可。
现在看看怎么实现的:
1.先从工具箱里面拉出来一个这样的窗体:
在这里插入图片描述
2.归零的方法:

private void qingchu_Click(object sender, EventArgs e)
        {
            this.lbljieguo.Text = "0";
            sb = new StringBuilder("");
        }

3.退格的方法:

 //退格的按钮
        private void tuige_Click(object sender, EventArgs e)
        {
            //判断当前能不能点击退格

            //判断显示框是否有值,有值的话可以删除,没有值的话提示不能删除
            if (this.lbljieguo.Text.Length > 0)
            {
                char ch = 'a';      //保存符号

                //遍历字符串
                foreach (char c in sb.ToString())
                {
                    ch = c;     //最后一个值放在ch里面
                }
                //判断最后一个是否是+-*/%
                if (ch != '+')
                {
                    //如果是,不能动num1和num2,否则可以动

                    if (flag == false)
                    {
                        num1 = new StringBuilder(num1.ToString().Substring(0, num1.Length - 1));

                    }
                    else
                    {
                        num2 = new StringBuilder(num2.ToString().Substring(0, num2.Length - 1));
                    }

                }
                ji = false;
                this.lbljieguo.Text = sb.ToString().Substring(0, this.lbljieguo.Text.Length - 1);
                sb = new StringBuilder(this.lbljieguo.Text);
            }
            else
            {
                MessageBox.Show("显示框都没有值,你删啥?", "提示信息");
            }


        }

4.(1 2 3 4 5 6 7 8 9 0)的点击事件:

 //第一个数
        StringBuilder num1 = new StringBuilder();
        //第二个数
        StringBuilder num2 = new StringBuilder();
        //判断是否是第一次输入
        bool flag = false;
        //运算符
        string fu = "";
        //当计算完结果时,不能退格
        bool ji = false;


        StringBuilder sb = new StringBuilder();
        //7
        private void btn7_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(7);
            }
            else
            {

                num2.Append(7);
            }
            sb.Append(7);
            this.lbljieguo.Text = sb.ToString();
        }

        //8
        private void btn8_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(8);
            }
            else
            {

                num2.Append(8);
            }
            sb.Append(8);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn9_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(9);
            }
            else
            {
                num2.Append(9);
            }
            sb.Append(9);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn4_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(4);
            }
            else
            {

                num2.Append(4);
            }
            sb.Append(4);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn5_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(5);
            }
            else
            {

                num2.Append(5);
            }
            sb.Append(5);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn6_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(6);
            }
            else
            {

                num2.Append(6);
            }
            sb.Append(6);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(1);
            }
            else
            {

                num2.Append(1);
            }
            sb.Append(1);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(2);
            }
            else
            {

                num2.Append(2);
            }
            sb.Append(2);
            this.lbljieguo.Text = sb.ToString();
        }

        private void btn3_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(3);
            }
            else
            {

                num2.Append(3);
            }
            sb.Append(3);
            this.lbljieguo.Text = sb.ToString();
        }
         private void btn0_Click(object sender, EventArgs e)
        {
            if (flag == false)
            {

                num1.Append(0);
            }
            else
            {

                num2.Append(0);
            }
            sb.Append(0);
            this.lbljieguo.Text = sb.ToString();
        }

5.加减乘除的点击事件:

private void btnchu_Click(object sender, EventArgs e)
        {
            flag = true;
            sb.Append("/");
            this.lbljieguo.Text = sb.ToString();
            fu = "/";
        }
         private void btnyu_Click(object sender, EventArgs e)
        {
            flag = true;
            sb.Append("%");
            this.lbljieguo.Text = sb.ToString();
            fu = "%";
        }
        private void btnjia_Click(object sender, EventArgs e)
        {
            flag = true;
            sb.Append("+");
            this.lbljieguo.Text = sb.ToString();
            fu = "+";

        }
          private void btnjian_Click(object sender, EventArgs e)
        {
            flag = true;
            sb.Append("-");
            this.lbljieguo.Text = sb.ToString();
            fu = "-";
        }
        private void btncheng_Click(object sender, EventArgs e)
        {
            flag = true;
            sb.Append("*");
            this.lbljieguo.Text = sb.ToString();
            fu = "*";
        }

6.等于的方法:

 //等于的按钮
        private void btndeng_Click(object sender, EventArgs e)
        {
            //string xianshi = sb.ToString();
            switch (fu)
            {
                case "+":
                    this.lbljieguo.Text = (int.Parse(num1.ToString()) + int.Parse(num2.ToString())).ToString();
                    break;
                case "-":
                    this.lbljieguo.Text = (int.Parse(num1.ToString()) - int.Parse(num2.ToString())).ToString();

                    break;
                case "*":
                    this.lbljieguo.Text = (int.Parse(num1.ToString()) * int.Parse(num2.ToString())).ToString();

                    break;
                case "/":
                    this.lbljieguo.Text = (int.Parse(num1.ToString()) / int.Parse(num2.ToString())).ToString();

                    break;
                case "%":
                    this.lbljieguo.Text = (int.Parse(num1.ToString()) % int.Parse(num2.ToString())).ToString();
                    break;
            }

            num1 = new StringBuilder("");
            num2 = new StringBuilder("");
            sb = new StringBuilder("");
            flag = false;
            ji = true;     //显示的是结果

        }

整个的实现方法以及代码都已经给出,不做伸手党,自己动脑思考思考,加油啊,在编码路上的你们~~
在这里插入图片描述

posted @ 2019-05-13 20:42  穆雄雄  阅读(114)  评论(0编辑  收藏  举报