![](https://i-blog.csdnimg.cn/blog_migrate/07af118cc41ad29191466444ca4f76b1.png)
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//点击运算符为true 点完数字为false
private string ysf;//记录上一次运算符
private string bds;//记录已经算完的表达式
private decimal sum;//记录上一步结果
private bool isok = true;//用来判断是否刚刚点过运算符
private void button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;//sender为事件主题 强制转换为button类型
if (isok)
{
textBox2.Text = btn.Text;//添加新的btn.text的字符串
isok = false;
}
else
{
textBox2.Text += btn.Text; //添加btn.text的字符串
}
}
private void buttonC_Click(object sender, EventArgs e)//清除所有数据从新开始
{
textBox1.Text="";
textBox2.Text = "0";
isok = true;
ysf = null;
sum = 0;
}
private void button加_Click(object sender, EventArgs e) //运算符
{
Button btn = (Button)sender;
string yunsuanfu = btn.Text; //定义一个string类型的yunsuanfu 来接收按的运算符
if (ysf== null) //if判断的是 是不是第一次点击运算符
{
sum = decimal.Parse(textBox2.Text); //第一次点击运算符计算出的结果转换类型并显示在box2里面
bds = textBox2.Text; //记录表达式
}
else //不是第一次点击运算符
{
if (!isok)
{
if (ysf == "+")//判断点击的运算符
{
sum = sum + decimal.Parse(textBox2.Text);//第二次点击运算符计算出的结果转换类型并显示在box2里面
}
if (ysf == "-")
{
sum = sum - decimal.Parse(textBox2.Text);
}
if (ysf == "*")
{
sum = sum * decimal.Parse(textBox2.Text);
}
if (ysf == "/")
{
sum = sum / decimal.Parse(textBox2.Text);
}
if (ysf == "%")
{
sum = sum % decimal.Parse(textBox2.Text);
}
bds = bds + ysf + textBox2.Text;//现在的表达式=原来的表达式+第二次的运算符+刚点进去的数字
}
}
textBox1.Text = bds + yunsuanfu;//上面的显示表达式+你刚点过的运算符
ysf = yunsuanfu;//保存上一次点击的运算符并赋到ysf变量中
isok = true;
textBox2.Text = sum.ToString(); //显示结果
}
private void button等于_Click(object sender, EventArgs e)//等于
{
textBox1.Text = "";
if (ysf == "+")
{
sum = sum + decimal.Parse(textBox2.Text);
}
if (ysf == "-")
{
sum = sum - decimal.Parse(textBox2.Text);
}
if (ysf == "*")
{
sum = sum * decimal.Parse(textBox2.Text);
}
if (ysf == "/")
{
//if (decimal.Parse(textBox2.Text) == 0)
//{
// textBox2.Text = "除数不可为0";
//}
sum = sum / decimal.Parse(textBox2.Text);
}
if (ysf == "%")
{
sum = sum % decimal.Parse(textBox2.Text);
}
textBox2.Text = sum.ToString();
sum = 0;
bds = "";
ysf = null;
isok = true;
}
private void button加减_Click(object sender, EventArgs e)//正负
{
if (!isok)
{
if (decimal.Parse(textBox2.Text) > 0)
{
textBox2.Text = "-" + textBox2.Text;
}
else
{
textBox2.Text = textBox2.Text.Substring(1);
}
}
}
private void button点_Click(object sender, EventArgs e)//小数点
{
if (textBox2.Text == "0")
{
textBox2.Text = "0.";
}
if (!isok && !textBox2.Text.Contains("."))
{
textBox2.Text += ".";
}
isok = false;
}
private void button箭头_Click(object sender, EventArgs e)//撤销
{
if (!isok)//禁止撤销得出的结果
{
if (textBox2.Text.Length == 1)
{
textBox2.Text = "0";
isok = true;
}
else
{
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
}
}
}
}
}