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 + ".";
}
}
}
}