namespace 计算器2._0
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面(用来存储判断是否刚刚点过运算符)
private string Biaodashi; //记录运算符之前的表达式(在第一栏)
private decimal Sum;//记录之前计算的结果(在第二栏)
private string Preyunsuanfu;//记录之前的运算符
private decimal d2;//存下面的数的成员变量 private void button32_Click(object sender, EventArgs e)//其它数字按钮
{
Button btn = (Button) sender; //sender为各自对应的类,这里为对应每个按钮
if (Isok) //如果第一次进入界面或者之前点过运算符
{
textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容
Isok = false;//将Isok改成false的意思:不是刚刚点完运算符了,也不是刚进入界面,是为了进入else
d2 = decimal.Parse(textBox2.Text);
}
else
{
textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
}
} private void button36_Click(object sender, EventArgs e)//0按钮
{
Button btn = (Button)sender; //sender为各自对应的类,这里为对应每个按钮
if (Isok) //如果第一次进入界面或者之前点过运算符
{
textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容 }
else
{
textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
}
} private void button44_Click(object sender, EventArgs e)//运算符
{
Button btn = (Button)sender;//sender为各自对应的类,这里为对应每个按钮
string yunsuanfu = btn.Text; //将按钮上的内容赋值给yunsuanfu;
if (Preyunsuanfu == null)
{
Biaodashi = textBox2.Text;
Sum = decimal.Parse(textBox2.Text);
}
else
{
if (!Isok) //如果刚刚点过运算符,这一块也就不需要运算了.反之则需要运算.
{ // !Isok 代表的是刚刚没点过运算符,这样才会运算下面的代码.
if (Preyunsuanfu == "+") //如果刚才的运算符是加号
{
Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
}
if (Preyunsuanfu == "-")
{
Sum = Sum - decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "*")
{
Sum = Sum * decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "/")
{
Sum = Sum / decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "%")
{
Sum = Sum % decimal.Parse(textBox2.Text);
}
Biaodashi = Biaodashi + Preyunsuanfu + textBox2.Text;//之前有运算符的话 第一栏的值变为 之前的表达式+刚才点进去的运算符+刚才输入的值
textBox2.Text = Sum.ToString(); //第二栏的值变为结果
} }
textBox1.Text = Biaodashi + yunsuanfu;//第一栏显示的文本为表达式+当前输入的运算符
Preyunsuanfu = yunsuanfu;//将yunsuanfu的值赋给 记录上一次的运算符;
Isok = true; //只要Isok是ture,就会把刚才的值清空重新输入现在按钮上的值 } private void button8_Click(object sender, EventArgs e) //清空键
{ //初始化所有状态
textBox1.Text = "";
textBox2.Text = "";
Isok = true;
Preyunsuanfu = null;
Sum = ;
Biaodashi = "";
d2 = ;
} private void button6_Click(object sender, EventArgs e)//撤销键
{
if (!Isok) //如果刚刚没点过运算符才能执行下面这一步
{
if (textBox2.Text.Length == )//如果第二栏的文本长度为1
{
textBox2.Text = ""; //点击撤销就会变成0
Isok = true;//只要一撤成0,就将Isok改成true. 这样0才不会累加,相当于重新进入界面。
}
else
{
textBox2.Text = textBox2.Text.Substring(, textBox2.Text.Length - );
}
} } private void button28_Click(object sender, EventArgs e) //小数点
{
if(!textBox2.Text.Contains("."))//之前有小数点了便不会执行下一步
{
textBox2.Text = textBox2.Text + ".";
Isok = false;//不会清空第二行
}
}
// private bool d3 = true;//是否点过其他数字
private void button30_Click(object sender, EventArgs e) //等号
{
Button btn = (Button)sender; textBox1.Text = ""; //第一栏为空 //计算之前的结果
if (Preyunsuanfu == "+") //如果刚才的运算符是加号
{
Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
}
if (Preyunsuanfu == "-")
{
Sum = Sum - decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "*")
{
Sum = Sum * decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "/")
{
Sum = Sum / decimal.Parse(textBox2.Text);
}
if (Preyunsuanfu == "%")
{
Sum = Sum % decimal.Parse(textBox2.Text);
} textBox2.Text = Sum.ToString();//第二栏显示为之前的结果 //初始化对象
Isok = true;
Biaodashi = "";
Preyunsuanfu = null; Sum = d2+decimal.Parse(textBox2.Text); //还没有继续点等号出现的情况 } private void button9_Click(object sender, EventArgs e) //正负号
{
if (!Isok) //不是刚点过运算符也不是刚进入界面,即如果是结果的话就不会执行下面的代码
{
if (decimal.Parse(textBox2.Text) > )
{
textBox2.Text = "-" + textBox2.Text;//如果大于零就添加负号
}
else
{
textBox2.Text = textBox2.Text.Substring();//如果小于零就把负号去掉
}
}
}
private string m;
private void button4_Click(object sender, EventArgs e) //M+ 将textbox2的值存到了M+里面
{
if (textBox2.Text == "")
{ }
else
{
textBox3.Text = "M";
}
m = textBox2.Text;
} private void button2_Click(object sender, EventArgs e)//MR 点击MR显示M+保存的数;
{
textBox2.Text = m;
} private void button5_Click(object sender, EventArgs e)//M- 之前M+保存的数减去你输入的数
{
if(!Isok)//不是刚刚点过运算符
{
Sum=decimal.Parse(m)-decimal.Parse(textBox2.Text);
textBox2.Text = Sum.ToString();
}
} private double ss;
private void button10_Click(object sender, EventArgs e)//根号
{
ss = Math.Sqrt(double.Parse(textBox2.Text));
textBox1.Text = "sqrt" + "(" + textBox2.Text + ")";
textBox2.Text = ss.ToString();
Isok = true;
} private void textBox2_TextChanged(object sender, EventArgs e)
{ } private void textBox1_TextChanged(object sender, EventArgs e)
{ }
private double fenshu;
private void button41_Click(object sender, EventArgs e)//几分之几
{
fenshu = / double.Parse(textBox2.Text);
textBox1.Text = "reciproc" + "("+textBox2.Text+")";//第一栏显示的
textBox2.Text = fenshu.ToString();//第二栏显示的 } private void button7_Click(object sender, EventArgs e)//CE键和C键功能一样
{
//初始化所有状态
textBox1.Text = "";
textBox2.Text = "";
Isok = true;
Preyunsuanfu = null;
Sum = ;
Biaodashi = "";
} private void button1_Click(object sender, EventArgs e) //MC 清空M+保存的值
{
textBox3.Text = "";
m = "";
} }
}

Winform——计算器的更多相关文章

  1. winform 计算器

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. Winform——计算器进制转换

    namespace 进制转换2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } p ...

  3. [原][C#][winForm]分级基金折溢价WinForm网络计算器

    分级基金折溢价WinForm网络计算器 通过子/母基金代码,从 [ 东方财富网,天天基金网,新浪 ] 抓取分级基金的子母基金数据(代码,名称,净值,价格), 并计算出子基金(A基金,B基金)以及母基金 ...

  4. winform操作windows系统计算器

    winform对系统计算器的调用,启动,最大化最小化显示,在mainwindow设置topmost=true时,正常显示计算器并置顶. /// <summary> /// 获取窗体的句柄函 ...

  5. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  6. winform(四)——简单计算器制作

    效果图: 代码区: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  7. winform制作简单计算器

    public Form1() { InitializeComponent(); textBox2.Text = ";//主显示屏 textBox1.Text = "";/ ...

  8. WinForm 制作一个简单的计算器

    namespace WindowsFormsApplication6 { public partial class Form1 : Form { //存储上次点击了什么按钮,0代表什么都没有点击,1代 ...

  9. C# winform(计算器)

随机推荐

  1. UML快速指南(摘要)转载

    UML 概述: UML是一个通用的建模语言.它最初开始捕捉到复杂的软件和非软件系统的行为,现在它已经成为一个OMG标准. UML提供元素和组件的复杂系统支持的要求. UML遵循面向对象的概念和方法.因 ...

  2. nginx配置解读

    nginx.conf基本配置 ##Start. ##Basic 基础配置 user www www; #运行用户 worker_processes ; #启动进程,通常设置成和cpu的数量相等 wor ...

  3. close和shutdown的区别

    转的,没验证 close(sock_fd)会把sock_fd的内部计数器减1当sock_fd的内部计数器为0时, 才调用shutodwn(), 并最终释放文件描述符调用shutdown()只是进行了T ...

  4. zend studio插件

    1.安装使用Aptana插件(html,css,js代码提示功能) 安装步骤: 1).zend studio->Help->Install New Software->work wi ...

  5. vi/vim使用指北 ---- Learning the vi and Vim Editors 读书 笔记

    vi/vim作为liux系统下最强大,最流行的文本编辑器之一.边看<Learning the vi and vim Editor>边学习vim,顺便做写简单的笔记,供以后查询. 没看这本书 ...

  6. ZOJ 1610 Count the Colors (线段树区间更新)

    题目链接 题意 : 一根木棍,长8000,然后分别在不同的区间涂上不同的颜色,问你最后能够看到多少颜色,然后每个颜色有多少段,颜色大小从头到尾输出. 思路 :线段树区间更新一下,然后标记一下,最后从头 ...

  7. C语言标准

    1,K&R C 1978年, Dennis Ritchie和Brian Wilson Kernighan合作出版了<The C Programming Language>的第一版. ...

  8. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-006类型转换器( @Converter(autoApply = true) 、type="converter:qualified.ConverterName" )

    一.结构 二.代码 1. package org.jpwh.model.advanced; import java.io.Serializable; import java.math.BigDecim ...

  9. WPF之通过EventTrigger修改模板中元素的属性

    前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...

  10. 如何在Java客户端调用RESTful服务

    在这个例子中,我们将看到如何使用java.net包实用工具,创建一个访问REST服务RESTful的客户端.当然这不是创建一个RESTful客户端最简单的方法,因为你必须自己读取服务器端的响应,以及J ...