using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
namespace jsq2myself
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool IsNum;//键入的按钮是不是数字按钮
bool flag;//是否标记了小数点
bool IsCounted;//控制是否之前进行过计算
double LeftNum;//左操作数
double RightNum;//右操作数
double ResultNum;//结果数字
bool IsConnect=true;//是否将输入数字连接到末尾
string LastSign;//上一次计算的符号
double i=1;//控制正负数符号
#region 数字录入接收的方法
private void NumCall(double number)
{
if (IsConnect == false)
{
textshow.Text = number.ToString();
IsConnect = true;
}
else
{
if ((textshow.Text == "0." )&& (!flag))
{
textshow.Text = number.ToString();
}
else if ((textshow.Text == "0.")&& (flag))
{
textshow.Text = "0." + number.ToString();
}
else
{
textshow.Text = textshow.Text + number.ToString();
}
}
}
#endregion
#region 获取左操作数
private void prepare_anotherOpreator()
{
//左操作数
if (IsCounted == false)
{
LeftNum = Convert.ToDouble(textshow.Text);
}
else
{
result();
LeftNum=ResultNum;//上次计算的结果
}
textshow.Text = LeftNum.ToString();
flag = false;
}
#endregion
#region 执行计算的操作结果--result
private void result()
{
if (i == 1)
RightNum = Convert.ToDouble(textshow.Text);
else
RightNum = (Convert.ToDouble(textshow.Text)) * (-1);
flag = false;
switch (LastSign)
{
case"+":
ResultNum = LeftNum + RightNum;
break;
case"-":
ResultNum = LeftNum - RightNum;
break;
case"*":
ResultNum = LeftNum * RightNum;
break;
case"/":
ResultNum = LeftNum / RightNum;
break;
default:
break;
}
textshow.Text = ResultNum.ToString();
}
#endregion
public void button_Click(object sender,EventArgs e)
{
Button btn = sender as Button; //经典应用1
//正则表达式判断按钮的文本是不是数字 //经典应用2
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^/d$");
IsNum = regex.IsMatch(btn.Text);
if (IsNum == true)
{
NumCall(Convert.ToDouble(btn.Text));
}
else if (btn.Text == ".")
{
if (flag)
{
System.Media.SystemSounds.Beep.Play();
}
else
{
textshow.Text = textshow.Text + ".";
flag = true;
}
}
else if(btn.Text=="+/-")
{
i*=-1;
}
else if (btn.Text == "+" || btn.Text == "-" || btn.Text == "*" || btn.Text == "/")
{
prepare_anotherOpreator();
IsCounted = true;
IsConnect = false;
LastSign = btn.Text;
//switch (btn.Text)
//{
// case "+":
//}
}
else if (btn.Text == "=")
{
result();
}
else if (btn.Text == "C")
{
//textshow.Text = Left(textshow.Text, length(textshow.Text) - 1);
}
else if (btn.Text == "CE")
{
flag = false;
IsCounted = false;
LeftNum = 0;
RightNum = 0;
ResultNum = 0;
LastSign = "";
textshow.Text = "0.";
}
}
//经典调用3
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ct in this.Controls)
{
if (ct is System.Windows.Forms.Button)
{
ct.Click += new EventHandler(button_Click);
}
}
}
private void button24_Click(object sender, EventArgs e)
{
//this.button24.Click+=new EventHandler(button_Click);
}
}
}