C#实现按键计算器功能
2024-10-14 23:24:14
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;
} }
}
运行结果:
不足:1.未处理数据溢出的情况
2.只支持整型数据运算,还不能进行浮点运算
最新文章
- Windows 7 OpenGL配置
- python random
- TinyFrame升级之六:全局日志的设计及实现
- java项目中读取properties文件
- 通过IIS不能连接远程数据库的问题
- 数据结构《9》----Threaded Binary Tree 线索二叉树
- 用jstack工具分析java程序
- javascript插件编写小结
- c# 可访问性级别
- putty 使用 注意事项
- Java语法基础总结
- hadoop2的mapreduce操作hbase数据
- 个性化WinPE封装方法----制作过程需要了解的“命令”
- ONCOCNV软件思路分析之control处理
- python读取三维点云球坐标数据并动态生成三维图像与着色
- .NET开发设计模式-单例模式
- App Technical Support
- SAI窗口无法移动
- IOS应用内购(一)内购的种类
- 区间dp的一些模式和总结
热门文章
- linux 下mysql多实例安装
- spring boot hello world
- java基础1(二)
- mpeg2文件分析(纯c解析代码)
- C语言的#if #ifdef #ifndef
- MySQL【文本处理函数】的使用方法
- 本地pip 源搭建起来
- Problem 4: Largest palindrome product
- 小白的Redis学习(一)-SDS简单动态字符串
- [Java] [Singleton] [DCL][happens-before]