using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Calculater
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void lable1_Click(object sender, EventArgs e)
{
}
// private void txt_result.TextChanged(object sender, EventArgs e)
//{
//}
//定义操作数A
double dblNumA = 0;
//定义操作数B
double dblNumB = 0;
//定义操作符
static string oper = "";
//定义操作数是否有小数点
static bool point = false;
//记录小数点后数字的个数
int dotnum = 0;
//用于保存最初的操作数,以便进行连续敲击等号运算
double dblNnm = 0;
//用于记录是否连续敲击等号按钮
bool takeEqual = true;
//显示函数
private void display(int i)
{
if (point)
{
dotnum++;
if (i == 0) { this.txt_result.Text = this.txt_result.Text + "0"; }
if (i != 0)
{
this.txt_result.Text = Convert.ToString(Convert.ToDouble(this.txt_result.Text) + i / (Math.Pow(10, dotnum)));
}
}
else
{
this.txt_result.Text += ".";
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length-1);
this.txt_result.Text = Convert.ToString(Convert.ToDouble(this.txt_result.Text) * 10 + i);
this.txt_result.Text = this.txt_result.Text + ".";
}
}
//0按钮的响应函数
private void button0_Click(object sender, EventArgs e)
{
display(0);
}
//1按钮的响应函数
private void button1_Click(object sender, EventArgs e)
{
display(1);
}
//2按钮的响应函数
private void button2_Click(object sender, EventArgs e)
{
display(2);
}
//3按钮的响应函数
private void button3_Click(object sender, EventArgs e)
{
display(3);
}
//4按钮的响应函数
private void button4_Click(object sender, EventArgs e)
{
display(4);
}
//5按钮的响应函数
private void button5_Click(object sender, EventArgs e)
{
display(5);
}
//6按钮的响应函数
private void button6_Click(object sender, EventArgs e)
{
display(6);
}
//7按钮的响应函数
private void button7_Click(object sender, EventArgs e)
{
display(7);
}
//8按钮的响应函数
private void button8_Click(object sender, EventArgs e)
{
display(8);
}
//9按钮的响应函数
private void button9_Click(object sender, EventArgs e)
{
display(9);
}
//符号函数
private void operat(string sign)
{
dblNumA = double.Parse(this.txt_result.Text);
point = false;
this.txt_result.Text = "0";
oper = sign;
takeEqual = true;
}
// /按钮响应函数
private void button_div_Click(object sender, EventArgs e)
{
operat("/");
}
//*按钮响应函数
private void button_mul_Click(object sender, EventArgs e)
{
operat("*");
}
//-按钮响应函数
private void button_sub_Click(object sender, EventArgs e)
{
operat("-");
}
//+按钮响应函数
private void button_add_Click(object sender, EventArgs e)
{
operat("+");
}
//%按钮响应函数
private void button_mod_Click(object sender, EventArgs e)
{
operat("%");
}
//+/-按钮响应函数
private void button_sign_Click(object sender, EventArgs e)
{
this.txt_result.Text = Convert.ToString(double.Parse(this.txt_result.Text) * -1);
}
//开平方—sqrt按钮响应函数
private void button_sqrt_Click(object sender, EventArgs e)
{
if (double.Parse(this.txt_result.Text) != Convert.ToInt64(double.Parse(this.txt_result.Text)) || point)
{
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length);
point = false;
}
else
{
this.txt_result.Text = this.txt_result.Text + "";
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);
}
this.txt_result.Text = Convert.ToString(Math.Sqrt(Double.Parse(this.txt_result.Text)));
takeEqual = false;
}
//等号按钮的响应函数
private void button_equ_Click(object sender, EventArgs e)
{
if (takeEqual)
{
dblNnm = dblNumB = double.Parse(this.txt_result.Text);
if (oper == "+")
{
this.txt_result.Text = Convert.ToString(dblNumA + dblNumB);
}
if (oper == "-")
{
this.txt_result.Text = Convert.ToString(dblNumA - dblNumB);
}
if (oper == "*")
{
this.txt_result.Text = Convert.ToString(dblNumA * dblNumB);
}
if (oper == "/")
{
if (dblNumB == 0)
{
MessageBox.Show("除数为零,非法操作!");
}
else
this.txt_result.Text = Convert.ToString(dblNumA / dblNumB);
}
if (oper == "%")
{
this.txt_result.Text = Convert.ToString(dblNumA % dblNumB);
}
else
if (double.Parse(this.txt_result.Text) == Convert.ToUInt64(double.Parse(this.txt_result.Text)) && 0 != double.Parse(this.txt_result.Text))
{
this.txt_result.Text = this.txt_result.Text + ".";
}
}
else WorkLikeFront();
takeEqual = false;
}
//清除按钮的响应函数
private void button_c_Click(object sender, EventArgs e)
{
this.txt_result.Text = "0";
oper = "";
point = false;
dotnum = 0;
dblNumA = 0;
takeEqual = true;
}
//退格按钮的响应函数
private void button_backspace_Click(object sender, EventArgs e)
{
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);//否则继续截取
if (this.txt_result.Text == "") { this.txt_result.Text = "0."; }
}
//1/x按钮的响应函数
private void button_rec_Click(object sender, EventArgs e)
{
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);
this.txt_result.Text = this.txt_result.Text + ".";
point = true;
}
//小数点按钮的响应函数
private void button_dot_Click(object sender, EventArgs e)
{
this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);
this.txt_result.Text = this.txt_result.Text + ".";
point = true;
}
//在连续敲击等号时用同样的操作数进行上一个运算符的运算
private void WorkLikeFront()
{
double dblNumB2 = double.Parse(this.txt_result.Text);
if (oper == "+")
{
this.txt_result.Text = Convert.ToString(dblNumB2 + dblNnm);
}
if (oper == "-")
{
this.txt_result.Text = Convert.ToString(dblNumB2 - dblNnm);
}
if (oper == "*")
{
this.txt_result.Text = Convert.ToString(dblNumB2 * dblNnm);
}
if (oper == "/")
{
if (dblNnm == 0)
{
MessageBox.Show("除数为零,非法操作");
}
else
this.txt_result.Text = Convert.ToString(dblNumB2 / dblNnm);
}
if (oper == "%")
{
this.txt_result.Text = Convert.ToString(dblNumB2 % dblNnm);
}
else
if (double.Parse(this.txt_result.Text) == Convert.ToInt64(double.Parse(this.txt_result.Text)) && 0 != double.Parse(this.txt_result.Text))
{
this.txt_result.Text = this.txt_result.Text + ".";
}
}
}
}