winfrom实现简单计算器V2版本

举报
穆雄雄 发表于 2022/12/14 21:51:23 2022/12/14
【摘要】 大家好,我是雄雄,欢迎关注微信公众号,雄雄的小课堂。前面,使用winform实现了个简单的计算器,今天,再来给大家看一个稍微复杂点的计算器,效果图如下:包括归零,退格,加减乘除都已经实现,如果想要继续扩展的可以在稍微改改即可。现在看看怎么实现的:1.先从工具箱里面拉出来一个这样的窗体:2.归零的方法:(直接将文本内容替换成0即可,是不是很简单)private void qingchu_Cli...

大家好,我是雄雄,欢迎关注微信公众号,雄雄的小课堂。

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

2.归零的方法:(直接将文本内容替换成0即可,是不是很简单)

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;     //显示的是结果

        }

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。