📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Calculator
{
public partial class frmCalculator : Form
{
public frmCalculator()
{
InitializeComponent();
}
private Operation oper = null;
//数据操作开关
private bool Switch = false;
//输入的第一个数
private double num1 = 0;
//输入的第二个数
private double num2 = 0;
//num1 和 num2 的区分
private bool numDis = false;
//判断输入的第一个数是否是多位数
private bool Multiplace1 = false;
//判断输入的第二个数是否是多位数
private bool Multiplace2 = false;
/// <summary>
/// 处理输入的数据
/// </summary>
/// <param name="defaultNum">当前显示的数据</param>
/// <param name="number">要加入的数据</param>
/// <returns>处理后的数据</returns>
private double dateSwitch(string defaultNum, string number)
{
string _return = String.Empty;
if (defaultNum != String.Empty || defaultNum != "0")
_return = defaultNum;
switch (Switch)
{
case false:
_return += number.Trim();
break;
case true:
_return = number.Trim();
break;
}
return double.Parse(_return.Trim());
}
/// <summary>
/// 判断输入的是第一个数还是第二个数
/// </summary>
/// <param name="defaultNum">当前显示的数据</param>
/// <param name="number">要加入的数据</param>
/// <returns>处理后的数据</returns>
private void Judgement(string defaultNum,string number)
{
switch (numDis)
{
case false:
//输入的第一位数是单位数
if (!Multiplace1)
{
txtOperation.Text = String.Empty;
Multiplace1 = true;
}
//输入的第一位数是多位数
else
txtOperation.Text = defaultNum;
num1 = dateSwitch(txtOperation.Text.Trim(), number);
txtOperation.Text = num1.ToString();
break;
case true:
//输入的第二位数是单位数
if (!Multiplace2)
{
txtOperation.Text = String.Empty;
Multiplace2 = true;
}
//输入的第二位数是多位数
else
txtOperation.Text = defaultNum;
num2 = dateSwitch(txtOperation.Text.Trim(), number);
txtOperation.Text = num2.ToString();
break;
}
}
private void Form1_Load(object sender, EventArgs e)
{
txtOperation.Text = "0";
}
private void btnOperate_Click(object sender, EventArgs e)
{
Button b = sender as Button;
string id = b.Name;
switch(id)
{
case "btnAdd":
oper = OperationFactory.CreateOperation("+");
break;
case "btnSubtraction":
oper = OperationFactory.CreateOperation("-");
break;
case "btnMultiplication":
oper = OperationFactory.CreateOperation("*");
break;
case "btnDivision":
oper = OperationFactory.CreateOperation("/");
break;
case "btnDivRem":
oper = OperationFactory.CreateOperation("%");
break;
}
numDis = true;
Switch = false;
}
private void btnSqrt_Click(object sender, EventArgs e)
{
oper = OperationFactory.CreateOperation("sqrt");
oper.StrNumA = num1;
txtOperation.Text = oper.GetResult().ToString().Trim();
num1 = double.Parse(txtOperation.Text.Trim());
numDis = false;
Switch = false;
Multiplace1 = false;
Multiplace2 = false;
}
private void btnSqua_Click(object sender, EventArgs e)
{
oper = OperationFactory.CreateOperation("squa");
oper.StrNumA = num1;
txtOperation.Text = oper.GetResult().ToString().Trim();
num1 = double.Parse(txtOperation.Text.Trim());
numDis = false;
Switch = false;
Multiplace1 = false;
Multiplace2 = false;
}
private void btnRec_Click(object sender, EventArgs e)
{
oper = OperationFactory.CreateOperation("rec");
oper.StrNumA = num1;
txtOperation.Text = oper.GetResult().ToString().Trim();
num1 = double.Parse(txtOperation.Text.Trim());
numDis = false;
Switch = false;
Multiplace1 = false;
Multiplace2 = false;
}
private void btnEqual_Click(object sender, EventArgs e)
{
oper.StrNumA = num1;
oper.StrNumB = num2;
txtOperation.Text = oper.GetResult().ToString().Trim();
numDis = false;
Switch = false;
Multiplace1 = false;
Multiplace2 = false;
num1 = double.Parse(txtOperation.Text.Trim());
}
private void btn_Click(object sender, EventArgs e)
{
Button b = sender as Button;
string id = b.Name;
switch (id)
{
case "btn1":
Judgement(txtOperation.Text.Trim(), "1");
break;
case "btn2":
Judgement(txtOperation.Text.Trim(), "2");
break;
case "btn3":
Judgement(txtOperation.Text.Trim(), "3");
break;
case "btn4":
Judgement(txtOperation.Text.Trim(), "4");
break;
case "btn5":
Judgement(txtOperation.Text.Trim(), "5");
break;
case "btn6":
Judgement(txtOperation.Text.Trim(), "6");
break;
case "btn7":
Judgement(txtOperation.Text.Trim(), "7");
break;
case "btn8":
Judgement(txtOperation.Text.Trim(), "8");
break;
case "btn9":
Judgement(txtOperation.Text.Trim(), "9");
break;
case "btn0":
Judgement(txtOperation.Text.Trim(), "0");
break;
}
}
private void btnDot_Click(object sender, EventArgs e)
{
int dotNum = txtOperation.Text.IndexOf(".");
if (dotNum < 0)
{
txtOperation.Text += ".";
}
}
private void btnC_Click(object sender, EventArgs e)
{
txtOperation.Text = "0";
oper = null;
numDis = false;
Switch = false;
Multiplace1 = false;
Multiplace2 = false;
num1 = 0;
num2 = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -