c#计算器
基于winform 开发的简单计算器 直接放窗体的逻辑代码 ,就一个textbox空间 其他都是button空件,UI自己,然后参照逻辑代码实现事件,即可得到上图程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
firstInput = true;
}
decimal prv=0;//记数
bool firstInput = true;//记录第一次输入
char fu;//判断最后输入的运算符
private bool pan2(string test)
{
//判断前一个是否也是运算符
if(pan(test))return true;
else return false;
}
private void panInputTail(char test)
{ //判断最后输入的运算符 比执行最后运算
switch (test)
{
case '+':prv += Convert.ToDecimal(this.textBox.Text);
break;
case '-':
prv -= Convert.ToDecimal(this.textBox.Text);
break;
case '*':
prv *= Convert.ToDecimal(this.textBox.Text);
break;
case '/':
prv /= Convert.ToDecimal(this.textBox.Text);
break;
case '%':
if (this.textBox.Text.Trim() == "0") return;
prv %= Convert.ToDecimal(this.textBox.Text);
break;
}
}
private bool pan(string test)
{ //判断前一个输入是否也是运算符
if (test.Length < 1) return false;
switch (test[test.Length-1])
{
case '+':
return true;
break;
case '-':
return true;
break;
case '*':
return true;
break;
case '/':
return true;
break;
case '%':
return true;
break;
}
return false;
}
private void button_0_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "0";
}
private void button_1_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "1";
}
private void button_2_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "2";
}
private void button_3_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "3";
}
private void button_4_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "4";
}
private void button_5_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "5";
}
private void button_6_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "6";
}
private void button_7_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "7";
}
private void button_8_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "8";
}
private void button_9_Click(object sender, EventArgs e)
{
if (pan(this.textBox.Text)) this.textBox.Text = "";
this.textBox.Text += "9";
}
private void button_clear_Click(object sender, EventArgs e)
{
this.textBox.Text = "";
this.prv = 0;
firstInput = true;
}
private void button_x_Click(object sender, EventArgs e)
{
if (this.textBox.Text.Length == 0)
{
firstInput= true;
return;
}
this.textBox.Text=this.textBox.Text.Remove(this.textBox.Text.Length-1);
}
private void button_dian_Click(object sender, EventArgs e)
{
this.textBox.Text += ".";
}
private void button_add_Click(object sender, EventArgs e)
{
if (pan2(this.textBox.Text)) return;
if (firstInput)
{
prv += Convert.ToDecimal(this.textBox.Text);
firstInput= false;
}
this.textBox.Text = "";
this.textBox.Text = "+";
fu = '+';
}
private void But_click(char s)
{
//封装运算符单击事件内容
if (pan2(this.textBox.Text))
{
return;
}
if (firstInput)
{
prv += Convert.ToDecimal(this.textBox.Text);
firstInput = false;
}
this.textBox.Text = "";
this.textBox.Text = s.ToString();
fu = s;
}
private void button_den_Click(object sender, EventArgs e)
{
if (pan2(this.textBox.Text)) return;
if (this.textBox.Text.Length != 0)
{
panInputTail(fu);
}
this.textBox.Text = prv.ToString();
}
private void button_jian_Click(object sender, EventArgs e)
{
But_click('-');
}
private void button_chen_Click(object sender, EventArgs e)
{
But_click('*');
}
private void button_chu_Click(object sender, EventArgs e)
{
But_click('/');
}
private void button_yu_Click(object sender, EventArgs e)
{
But_click('%');
}
//使用键盘操作
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyValue)
{
case 48:
button_0_Click(null,null);
break;
case 49:
button_1_Click(null, null);
break;
case 50:
button_2_Click(null, null);
break;
case 51:
button_3_Click(null, null);
break;
case 52:
button_4_Click(null, null);
break;
case 53:
button_5_Click(null, null);
break;
case 54:
button_6_Click(null, null);
break;
case 55:
button_7_Click(null, null);
break;
case 56:
button_8_Click(null, null);
break;
case 57:
button_9_Click(null, null);
break;
}
//小键盘的
switch (e.KeyValue)
{
case 96:
button_0_Click(null, null);
break;
case 97:
button_1_Click(null, null);
break;
case 98:
button_2_Click(null, null);
break;
case 99:
button_3_Click(null, null);
break;
case 100:
button_4_Click(null, null);
break;
case 101:
button_5_Click(null, null);
break;
case 102:
button_6_Click(null, null);
break;
case 103:
button_7_Click(null, null);
break;
case 104:
button_8_Click(null, null);
break;
case 105:
button_9_Click(null, null);
break;
//
case 110:
button_dian_Click(null, null);
break;
case 106:
button_chen_Click(null, null);
break;
case 107:
button_add_Click(null, null);
break;
case 109:
button_jian_Click(null, null);
break;
case 111:
button_chu_Click(null, null);
break;
case 37:
button_yu_Click(null, null);
break;
case 46:
button_clear_Click(null, null);
break;
case 8:
button_x_Click(null, null);
break;
case 13:
button_den_Click(null, null);
break;
}
}
}
}