C#实现按键计算器功能

时间:2023-03-10 04:52:24
C#实现按键计算器功能

C#实现按键计算器功能

(一次失败的编程)

界面:

C#实现按键计算器功能

代码如下:

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 按键计算器
{
public partial class Form1 : Form
{
//flag1表示开始输入数字时,该数的位数
//flag2表示在此时运算符(+ - */)的个数
//flag3在输入运算符时用于判断,表示在输入运算符时,前一个运算符为+时等于1, -为2 *为3 /为4
int flag1 =,flag2=,flag3=; //isEqual表示该状态时是否点击了等于按钮
bool isEqual =false;
//isClear表示是否清空了主输入编辑框里的数据
bool isClear = true; //isError表示是否出现错误,数据溢出,该部分还未完善
bool isError = false; //输入等于号的个数,这里程序后面会控制在0和1之间,多余的输入无效
int numEqual = ; //m表示进行计算的第一个数,n表示进行计算的第二个数,一般第一次计算结束后会把结果存储在result中,
int m = , n = ,result=; public Form1()
{
InitializeComponent();
} //将键盘与按钮关联
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.NumPad1||keyData==Keys.D1)
{
this.btn1.Focus();
this.btn1.PerformClick();
}
if (keyData == Keys.NumPad2 || keyData == Keys.D2)
{
this.btn2.Focus();
this.btn2.PerformClick();
}
if (keyData == Keys.NumPad3 || keyData == Keys.D3)
{
this.btn3.Focus();
this.btn3.PerformClick();
}
if (keyData == Keys.NumPad4 || keyData == Keys.D4)
{
this.btn4.Focus();
this.btn4.PerformClick();
}
if (keyData == Keys.NumPad5 || keyData == Keys.D5)
{
this.btn5.Focus();
this.btn5.PerformClick();
}
if (keyData == Keys.NumPad6 || keyData == Keys.D6)
{
this.btn6.Focus();
this.btn6.PerformClick();
}
if (keyData == Keys.NumPad7 || keyData == Keys.D7)
{
this.btn7.Focus();
this.btn7.PerformClick();
}
if (keyData == Keys.NumPad8 || keyData == Keys.D8)
{
this.btn8.Focus();
this.btn8.PerformClick();
}
if (keyData == Keys.NumPad9 || keyData == Keys.D9)
{
this.btn9.Focus();
this.btn9.PerformClick();
}
if (keyData == Keys.NumPad0 || keyData == Keys.D0)
{
this.btn0.Focus();
this.btn0.PerformClick();
}
if (keyData == Keys.Add)
{
this.btnadd.Focus();
this.btnadd.PerformClick();
}
if (keyData == Keys.Subtract || keyData == Keys.OemMinus)
{
this.btnsub.Focus();
this.btnsub.PerformClick();
}
if (keyData == Keys.Multiply)
{
this.btnmul.Focus();
this.btnmul.PerformClick();
}
if (keyData == Keys.Divide)
{
this.btndiv.Focus();
this.btndiv.PerformClick();
}
if (keyData == Keys.Enter || keyData == Keys.Oemplus)
{
this.btnequ.Focus();
this.btnequ.PerformClick();
}
if (keyData == Keys.Back)
{
this.btncle.Focus();
this.btncle.PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
} private void btn1_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = ""; textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + ""; flag1++;
} private void btn2_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn3_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn4_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn5_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn6_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn7_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn8_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn9_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn0_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btnf_Click(object sender, EventArgs e)
{
// textBox1.Text = textBox1.Text + ".";
} private void btnadd_Click(object sender, EventArgs e)
{
flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1!=)
{
textBox1.Text = textBox1.Text + "+";
if (flag2 == )
{
m = int.Parse(textBox2.Text);
textBox2.Text="";
flag1 = ;
flag2=;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch(flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; } textBox2.Text="";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void textBox1_TextChanged(object sender, EventArgs e)
{ } private void btnmul_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "*";
if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
if(isEqual) textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btndiv_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "/";
if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btnsub_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "-"; if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3=; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; } textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btnequ_Click(object sender, EventArgs e)
{ if (flag1 != )
{
if (numEqual == )
{
textBox1.Text = textBox1.Text + "=";
numEqual++;
}
n = int.Parse(textBox2.Text);
switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
if (flag2 == )
{
if (numEqual == )
{
m = int.Parse(textBox2.Text);
}
}
textBox2.Text = m.ToString();
result = m; flag1 = ; flag2 = ;
flag3 = ;
isEqual = true; }
}
private void btncle_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
numEqual = ;
isClear = true;
} }
}

运行结果:

C#实现按键计算器功能

不足:1.未处理数据溢出的情况

   2.只支持整型数据运算,还不能进行浮点运算