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();//7private 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();}//8private 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;     //显示的是结果}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACID中C与CAP定理中C的区别

转载自 ACID中C与CAP定理中C的区别 ACID和CAP定理中都有C,代表Consistent一致性,很多人容易将这两个C混为一谈,其实这两个一致性是有区别的。 事务的定义是一系列操作要么全部成功,要么全部不成功,数据库的事务机制是…

winform通过ListView绑定数据库数据源

来,我们开始拉窗体,和我一样的这个就可以: 很简单,在窗体里面只放一个ListView控件即可,然后点击ListView的属性Columns 分别在Text里面写用户名和密码,点击确定。 然后设置显示视图View为Details&…

理解C# 4 dynamic(4) – 让人惊艳的Clay

一,多种方式初始化对象 1, 最简单的对象构建和初始化 dynamic New new ClayFactory();var person New.Person(); person.FirstName "Louis"; person.LastName "Dejardin"; 注意这里的Person并不是一个具体的,实际存在的类或者…

配置struts.xml时extends=struts-default会报错,原因和解决

提示:此种解决方法只适用于Intellij IDEA,MyEclipse或者Eclipse还得另寻它法,但估计原因应该是类似的。 在Intellij IDEA 2017使用Struts2框架时,若新建项目时并未导入Struts2框架而是在后期手动新建lib目录导入Struts2框架后&…

React生命周期(新)

三个标红的需要前面加上UNSAFE_ 三个常用的组件

发力企业级市场,微软Hololens开辟了一条VR新道路

近日微软Hololens可谓是动作频频,2月份Hololens与BGC Engineering合作,从矿山规划到泥石流建模,该应用程序可帮助BGC Engineering及其客户可视化一个场景并解决工程问题。 3月份HoloLens与Cigna展开医疗合作,将Hololens用于健康检…

写给工程师的10条精进原则

转载自 写给工程师的10条精进原则 引言 时间回到8年前,我人生中的第一份实习工作,是在某互联网公司的无线搜索部做一个C工程师。当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个CaseStudy。由于对部署环境…

Struts2下创建自定义类型转换器(表单中日期的处理)

在表单提交中需要有日期的输入,默认的Struts2处理机制可能不能满足需求,需要自定义一下类型转换器。如: String----->java.util.Date:输入 java.util.Date------>String:输出:查询显示,输出错误回显 …

部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

一.CI(Continuous Integration)简介 CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2:不光要对语法进行验,也要提供一系列的自动化来验证 CI规则3:CI失败后,要把修复CI当做第一优先级的…

React中的唯一标识key(用index VS id)和key的选择

1. 虚拟DOM中key的作用:1). 简单的说: key是虚拟DOM对象的标识, 在更新显示时key起着极其重要的作用。2). 详细的说: 当状态中的数据发生变化时,react会根据【新数据】生成【新的虚拟DOM】, 随后React进行【新虚拟DOM】与【旧虚拟DOM】的diff比较&#x…

Android中ImageView的scaleType 属性说明。

ImageView是Android中最常用的控件之一,在使用ImageView的时候,必不可少的会使用到scaleType属性,该属性指定了你的ImageView如何显示图片。包括是否进行缩放,等比缩放,缩放后显示的位置, Android中提供了八…

支付渠道参数如何设计成路由化配置

转载自 支付渠道参数如何设计成路由化配置 今天我们来探讨在搭建支付系统时一个比较关键的问题:渠道参数路由化配置如何设计? 在开发支付系统的时候,我们经常会涉及到对接多个支付渠道,除常见的支付宝、微信外可能还会根据不同的…

分布式数据访问服务之1—华山论剑篇

业界主流的互联网架构中,分布式服务框架、分布式数据访问服务、消息队列服务、服务网关(API)、分布式事务等都是核心的组件和框架。 当我们的系统规模越来越大,从几台服务器扩展到几十台、几百台、上千台,传统的烟囱式的、大集中式系统架构&…

漫画:什么是快速排序?(完整版)

转载自 漫画:什么是快速排序?(完整版) 同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。 不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端&a…

测试——《微服务设计》读书笔记

一.测试象限(Brain Marick) 二.测试金字塔(Mike Cohn) 1.单元测试 通常只测试一个函数或方法调用,通过TDD或者基于属性而写的测试就属于这一类,在UnitTest中,我们不会启动服务,对且对…

MyKtv点歌系统前台主要功能实现,内附数据库脚本,可以直接运行

C#开发工具:Visual Studio 2012 数据库:Sql Server Windows版本:Win10 分辨率:1366*768 文章的最后有KTV点歌系统的前后台源码下载链接。 在正式写代码之前先看一下运行效果图,如果觉得这个是你需要的,那么…