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
{
//储存第一位数
float temp1 = -1;
//连续计算标记
int index = 0;
//存储符号位
string ch = "";
//结果标记
bool isresult = false;
//运算方式标记
int pos = 0;
public Form1()
{
InitializeComponent();
}
private void addNum(int num)
{
//当前标记如果为计算出的结果 则在接收下一次数值按键时进行覆盖操作
if(!isresult)
textBox1.Text = textBox1.Text + num.ToString();
else
{
textBox1.Text = num.ToString();
isresult = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
addNum(1);
}
private void button2_Click(object sender, EventArgs e)
{
addNum(2);
}
private void button3_Click(object sender, EventArgs e)
{
addNum(3);
}
private void button4_Click(object sender, EventArgs e)
{
addNum(4);
}
private void button5_Click(object sender, EventArgs e)
{
addNum(5);
}
private void button6_Click(object sender, EventArgs e)
{
addNum(6);
}
private void button7_Click(object sender, EventArgs e)
{
addNum(7);
}
private void button8_Click(object sender, EventArgs e)
{
addNum(8);
}
private void button9_Click(object sender, EventArgs e)
{
addNum(9);
}
private void button10_Click(object sender, EventArgs e)
{
addNum(0);
}
private void sum_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
pos = 4;
click();
ch = "+";
}
}
private void min_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
pos = 3;
click();
ch = "-";
}
}
private void cheng_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
pos = 2;
click();
ch = "*";
}
}
private void chu_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
pos = 1;
click();
ch = "/";
}
}
private void equal_Click(object sender, EventArgs e)
{
calc();
}
private void clear_Click(object sender, EventArgs e)
{
textBox1.Text = "";
temp1 = 0;
pos = 0;
index = 0;
isresult = false;
ch = "";
}
//用来处理等于计算
private void calc()
{
float temp2 = Convert.ToSingle(textBox1.Text);
switch (pos)
{
case 1:
textBox1.Text = (temp1 / temp2).ToString();
break;
case 2:
textBox1.Text = (temp1 * temp2).ToString();
break;
case 3:
textBox1.Text = (temp1 - temp2).ToString();
break;
case 4:
textBox1.Text = (temp1 + temp2).ToString();
break;
}
isresult = true;
index = 0;
}
//用来处理连续计算
private void click()
{
if (index == 0)
{
temp1 = Convert.ToSingle(textBox1.Text);
index++;
textBox1.Text = "";
}
else
{
selectCh(ch);
textBox1.Text = temp1.ToString();
isresult = true;
}
}
//根据传入符号进行连续计算
private void selectCh(string ch1)
{
switch (ch1)
{
case "+":
temp1 += Convert.ToSingle(textBox1.Text);
break;
case "-":
temp1 -= Convert.ToSingle(textBox1.Text);
break;
case "*":
temp1 *= Convert.ToSingle(textBox1.Text);
break;
case "/":
temp1 /= Convert.ToSingle(textBox1.Text);
break;
}
}
}
}