winfrom实现简单计算器V2版本

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

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


相关文章
|
SQL Cloud Native 关系型数据库
【工具】竟比Navicat还好用,我咋这么不信呢
文章详细阐述了SQLynx的四大重点:1. 什么是SQLynx;2. 如何下载;3. 与Navicat相比的优势;4. 使用方法。SQLynx支持多种数据库和操作系统,具备云原生架构、自动化与智能化功能、团队协作支持等优点。通过实例演示了如何创建MySQL连接并导出表数据,展示了其高效、灵活的特点。希望读者能支持国产软件的发展。
1559 2
【工具】竟比Navicat还好用,我咋这么不信呢
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
66700 4
详解HTTP四种请求:POST、GET、DELETE、PUT
|
编译器 开发工具 C语言
vscode安装+配置+使用+调试【保姆级教程】
vscode安装+配置+使用+调试【保姆级教程】
55419 8
|
开发工具 git
【问题解决】Git命令行常见error及其解决方法
以下是我一段时间没有使用xshell,然后用git命令行遇到的一些系列错误和他们的解决方法
734 0
|
设计模式 监控 前端开发
从MVC到MVVC:软件架构的演变和迭代(一)
从MVC到MVVC:软件架构的演变和迭代
|
调度 数据库
Quartz的Scheduler的关闭和挂起,并发控制(四)中
Quartz的Scheduler的关闭和挂起,并发控制(四)中
2163 0
Quartz的Scheduler的关闭和挂起,并发控制(四)中
|
6天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
17天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1320 7