几天内居然这么多人看了,那么就更新一下。之前的代码复用情况太多,改了一下,少了一两百行。
不过可能还有bug,欢迎指正。
首先把界面设计好,画好那么多按钮,并给每个按钮命名,然后再双击按钮,添加相应的事件,比如按数字就在textbox.text加上数字。
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 Calculator
{
public partial class Form1 : Form
{
double a = 0;//计算结果
double b = 0;//第一个操作数
double h = 0;//第二个操作数
string d;//运算符号
bool c=false;//按下运算符号后就把textbox里的清空
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
}
void number(string n)
{
if (c == true)
{
c = false;
textBox1.Text = "";
}
textBox1.Text += n;
}
void operation()
{
c = true;
h = double.Parse(textBox1.Text);
switch (d)
{
case "+":
b = b + h;
break;
case "-":
b = b - h;
break;
case "*":
b = b * h;
break;
case "/":
b = b / h;
break;
case "%":
b = b % h;
break;
default:
b = h;
break;
}
}
//按下0
private void button10_Click(object sender, EventArgs e)
{
number("0");
if(d=="/"&&textBox1.Text=="0")
{
textBox1.Clear();
MessageBox.Show("除数不能为0!");
}
}
//按下1
private void button1_Click(object sender, EventArgs e)
{
number("1");
}
//按下2
private void button2_Click(object sender, EventArgs e)
{
number("2");
}
//按下3
private void button3_Click_1(object sender, EventArgs e)
{
number("3");
}
//按下4
private void button4_Click(object sender, EventArgs e)
{
number("4");
}
//按下5
private void button5_Click(object sender, EventArgs e)
{
number("5");
}
//按下6
private void button6_Click(object sender, EventArgs e)
{
number("6");
}
//按下7
private void button7_Click(object sender, EventArgs e)
{
number("7");
}
//按下8
private void button8_Click(object sender, EventArgs e)
{
number("8");
}
//按下9
private void button9_Click(object sender, EventArgs e)
{
number("9");
}
//按下.
private void button11_Click(object sender, EventArgs e)
{
if (c == true)
{
c = false;
textBox1.Text = "";
}
if(!textBox1.Text.Contains("."))
textBox1.Text += ".";
}
//按下+
private void button17_Click(object sender, EventArgs e)
{
operation();
d = "+";
}
//按下-
private void button16_Click(object sender, EventArgs e)
{
operation();
d = "-";
}
//按下*
private void button14_Click(object sender, EventArgs e)
{
operation();
d = "*";
}
//按下/
private void button12_Click(object sender, EventArgs e)
{
operation();
d = "/";
}
//按下%
private void button13_Click(object sender, EventArgs e)
{
operation();
d = "%";
}
//按下C
private void button15_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
//按下=
private void button18_Click(object sender, EventArgs e)
{
if (double.TryParse(textBox1.Text, out h) == true)
{
h = double.Parse(textBox1.Text);
}
else
{
MessageBox.Show("请输入正确的数!");
textBox1.Text = "";
}
switch (d)
{
case "+":
a = b + h;
break;
case "-":
a = b - h;
break;
case "*":
a = b * h;
break;
case "/":
a = b / h;
break;
case "%":
a = b % h;
break;
}
textBox1.Text = a + "";
d = "";
a = 0;
c = true;
}
}
}
效果: