初学winform,写了一个单行计算器和一个双行计算器。主界面的和代码如下。

单行计算器:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Calculator
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//定义并初始化三个字符串,分别用来储存运算符号、第一个数、第二个数。private string Operator = null;private string i1 = null;private string i2 = null;//获取结果的方法:通过运算符号、第一个数、第二个数来获取运算结果private double GetAnswer(string a, string b, string ope){switch (ope){case "u":return double.Parse(a) + double.Parse(b);case "n":return double.Parse(a) - double.Parse(b);case "t":return double.Parse(a) * double.Parse(b);case "v":return double.Parse(a) / double.Parse(b);default:return 0;}}//按下0-9数字按键来触发该方法。private void btn1_Click(object sender, EventArgs e){//通过事件源的名字的第四个字符来获取数字string number = (sender as Button).Name[3].ToString();//txtProcess用来显示计算过程if (Operator == null){i1 += number;txtShow.Text = i1;}else{i2 += number;txtShow.Text = i2;}btnDel.Enabled = true;}//获取并输出运算结果private void btnEnter_Click(object sender, EventArgs e){if (i1 != null && i2 != null){txtShow.Text = GetAnswer(i1, i2, Operator).ToString();i1 = null;i2 = null;Operator = null;//输出的结果不能进行回删,所以回删按键禁用。btnDel.Enabled = false;}}//单击运算符按键触发的方法private void btnPlus_Click(object sender, EventArgs e){//通过事件源的名字来获取运算符号,u代表加号,n减号,t乘法,v除法string operate = (sender as Button).Name[5].ToString();//如果已经进行过运算后直接按下运算符号,则将运算结果作为第一个数。if (i2 != null){txtShow.Text = GetAnswer(i1, i2, Operator).ToString();}i1 = txtShow.Text;Operator = operate;i2 = null;//将第二个数初始化btnDel.Enabled = false;}//CE按键用来初始化计算器private void btnCE_Click(object sender, EventArgs e){i1 = null;i2 = null;Operator = null;txtShow.Text = null;btnDel.Enabled = false;}//小数点按键private void btnPiont_Click(object sender, EventArgs e){if (Operator == null){i1 += ".";txtShow.Text = i1;}else{i2 += ".";txtShow.Text = i2;}}//回删按键private void btnDel_Click(object sender, EventArgs e){//如果未按下运算符号,则回删第一个数if (Operator == null){if (i1.Length >= 1){i1 = i1.Remove(i1.Length - 1);}txtShow.Text = i1;}else//否则回删第二个数{if (i2.Length >= 1){i2 = i2.Remove(i2.Length - 1);}txtShow.Text = i2;}}}
}

双行计算器:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Calculator
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//定义并初始化三个字符串,分别用来储存运算符号、第一个数、第二个数。private string Operator = null;private string i1 = null;private string i2 = null;//定义一个字符串,保存原单行计算器显示的数字。双行计算器时,保存中间数据,当按下=键时候,显示结果。private string txtShowHide = null;//获取结果的方法:通过运算符号、第一个数、第二个数来获取运算结果private double GetAnswer(string a, string b, string ope){if (a != null && b != null){switch (ope){case "u":return double.Parse(a) + double.Parse(b);case "n":return double.Parse(a) - double.Parse(b);case "t":return double.Parse(a) * double.Parse(b);case "v":return double.Parse(a) / double.Parse(b);default:return 0;}}elsereturn 0;}//按下0-9数字按键来触发该方法。private void btn1_Click(object sender, EventArgs e){if (i1 == null)txtProcess.Text = null;//通过事件源的名字的第四个字符来获取数字string number = (sender as Button).Name[3].ToString();//txtProcess用来显示计算过程txtProcess.Text += number;if (Operator == null){i1 += number;//txtShow.Text = i1;txtShowHide = i1;}else{i2 += number;//txtShow.Text = i2;txtShowHide = i2;}btnDel.Enabled = true;}//获取并输出运算结果private void btnEnter_Click(object sender, EventArgs e){if (i1!=null&&i2 != null){txtShowHide = GetAnswer(i1, i2, Operator).ToString();txtShow.Text = txtShowHide;i1 = null;i2 = null;Operator = null;//输出的结果不能进行回删,所以回删按键禁用。btnDel.Enabled = false;txtProcess.Text += "=";}}//单击运算符按键触发的方法private void btnPlus_Click(object sender, EventArgs e){//txtProcess.Text = txtShow.Text;//通过事件源的名字来获取运算符号,u代表加号,n减号,t乘法,v除法string operate = (sender as Button).Name[5].ToString();//如果已经进行过运算并得出结果后,直接按下运算符号,则将运算结果作为第一个数。if (i2 != null){//txtShow.Text = GetAnswer(i1, i2, Operator).ToString();txtShowHide = GetAnswer(i1, i2, Operator).ToString();}i1 = txtShowHide;txtProcess.Text = i1;Operator = operate;i2 = null;//将第二个数初始化btnDel.Enabled = false;switch (operate){case "u":txtProcess.Text += "+";break;case "n":txtProcess.Text += "-";break;case "t":txtProcess.Text += "×";break;case "v":txtProcess.Text += "÷";break;}}//CE按键用来初始化计算器private void btnCE_Click(object sender, EventArgs e){i1 = null;i2 = null;Operator = null;txtShowHide = null;txtShow.Text = null;txtProcess.Text = null;btnDel.Enabled = false;}//小数点按键private void btnPiont_Click(object sender, EventArgs e){if (i1 == null)txtProcess.Text = null;txtProcess.Text += ".";if (Operator == null){i1 += ".";//txtShow.Text = i1;txtShowHide = i1;}else{i2 += ".";//txtShow.Text = i2;txtShowHide = i2;}}//回删按键private void btnDel_Click(object sender, EventArgs e){//如果未按下运算符号,则回删第一个数if (Operator == null){if (i1.Length >= 1){i1 = i1.Remove(i1.Length - 1);txtProcess.Text = txtProcess.Text.Remove(txtProcess.Text.Length - 1);}//txtShow.Text = i1;txtShowHide = i1;}else//否则回删第二个数{if (i2.Length >= 1){i2 = i2.Remove(i2.Length - 1);txtProcess.Text = txtProcess.Text.Remove(txtProcess.Text.Length - 1);}//txtShow.Text = i2;txtShowHide = i2;}}}
}

简要说明:

1.单行和双行计算器,可以实现加减乘除无括号四则运算。如123+234,12+34+97+66,6*92-555;
2.也可以在算出结果后,以结果为因数继续计算。如5*9=45,然后直接 +3=48;
3.双行计算器第一行只显示计算过程,第二行只显示计算结果。
4.←键为回删键,CE键为复位键。
5.难免依然存在bug,欢迎指出。

C#双行计算器和单行计算器相关推荐

  1. python实现50行代码_50行代码实现python计算器主要功能

    实现功能:计算带有括号和四则运算的式子 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层小括 ...

  2. python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例

    Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...

  3. 【jiasuba】鲜为人知的Word双行合一设置

    双行合一是Microsoft Office Word软件的一项编辑功能,在编辑Word文档的过程中,有时需要在一行中显示两行文字,然后在相同的行中继续显示单行文字,实现单行.双行文字的混排效果.这时可 ...

  4. html颜色代码表odd,CSS的odd和even属性实现table表格tr单双行颜色相间而不同

    CSS的odd和even属性实现table表格tr单双行颜色相间而不同  0  325 暴猿 2019/6/13 9:04:47 效果如下图所示: img[/layedit/img/2019061 ...

  5. 使用TLE(双行)根数计算出轨道数据以供Cesium使用

    使用TLE(双行)根数计算出轨道数据以供Cesium使用 资源: satellite.js:https://download.csdn.net/download/qq_41176306/1936095 ...

  6. JavaScript,js实现 科学计算器,普通计算器,在线计算器

    JavaScript,js实现 科学计算器,普通计算器,在线计算器 样式 普通计算器 高级计算器 js计算逻辑 样式 普通 高级 普通计算器 <div class="calculato ...

  7. 科学计算机和普通计算器,[财经]普通计算器和科学计算器的区别是什么?手机计算器阵亡是怎么回事? - 南方财富网...

    手机计算器全线阵亡是怎么回事?原来,不少手机的计算机出现了奇妙的BUG,计算"10%+10%"时,得出的结果不是0.2,而是0.11.经网友反馈,包括OPPO.华为.苹果.小米等多 ...

  8. 普通计算器和科学计算器的实现过程另附带画图功能(C# 窗体)

    有关科学计算器的方法设计(C#) 这只是一个纯小白的自治计算器,代码可能不是十分简便,希望可以用作参考. 计算器的实现 有关科学计算器的方法设计(C#) 有关普通计算器和科学计算器的代码如下 画图功能 ...

  9. TLE双行轨道数解析

    参考代码: 本文章根据tle2czml插件改编:tle2czml 引用插件: 朱利安时间转换工具:julian yarn add julian js日期处理类库:momentjs yarn add m ...

最新文章

  1. 用 go 实现跨平台 Autoit/AutoHotkey 和按键精灵功能示例代码
  2. w3school-html教程笔记-1-20140227
  3. 设计模式:迭代器模式(Iterator)
  4. [原]HTML5系列培训一(20140326)
  5. 阿里查出售假店主并索赔140万,这次是大数据帮的忙
  6. APP设计UI优秀案例|价格标签这样设计才更直观!
  7. R语言中识别和去除重复行
  8. java restful返回json_java 调用接口的时候报的错 用的是restful的post方式,请求返回的是json...
  9. python使用lxml库对解析后的DOM树形成的xpath计算得到平均值、中位数、方差
  10. Hexo高级教程之代码高亮
  11. Java实现大写金额转小写金额
  12. Cesium: 如何将倾斜摄影数据转换为3dTiles格式
  13. Mysql自增主键用完了怎么办
  14. Spring到底是什么
  15. 计算机打字测速,电脑的打字测速软件分享
  16. 油菜花王国(并查集)
  17. AWS免费账号取消步骤
  18. 什么是GPIO?(详细介绍)
  19. 开源 Java 中文分词器 Ansj 作者孙健专访
  20. Task 4: Contextual Word Embeddings

热门文章

  1. linux下 svn服务器搭建及使用
  2. 智能家居系统结构标准化
  3. 什么是NON-3GPP网络
  4. 使用dmsetup命令生成snapshot
  5. 从公司理财到个人理财
  6. CI2451/CI2454/CSM2433灯控遥控方案国产8位RISC内核无线MCU单片机芯片
  7. 翻译TIPatterns--项目(Projects)
  8. 使用vue create 创建项目时的翻译
  9. [php] <?php phpinfo(); ?>只显示源代码 / 无显示
  10. window下如何设置屏幕扩展