WinForm 制作一个简单的计算器

  1 namespace WindowsFormsApplication6
  2 {
  3     public partial class Form1 : Form
  4     {
  5         //存储上次点击了什么按钮,0代表什么都没有点击,1代表数字按钮,2代表点击了运算符
  6         private int prev = 0;
  7         //存储计算的中间结果
  8         private decimal zjjg = 0;
  9         //记录上次按得什么运算符
 10         private string prevysf = "+";
 11 
 12         public Form1()
 13         {
 14             InitializeComponent();
 15         }
 16 
 17         private void button1_Click(object sender, EventArgs e) //输入的数
 18         {
 19             //将事件源转换为按钮
 20             Button btn = sender as Button;
 21             //替换(文本框内容为0,点击了运算符)
 22             if (prev == 2 || txtbottom.Text == "0")
 23             {
 24                 txtbottom.Text = btn.Text;
 25             }
 26             //追加(内容不为0,并且上次没有点击运算符)
 27             else
 28             {
 29                 txtbottom.Text += btn.Text;
 30             }
 31             //点击了按钮数字
 32             prev = 1;
 33         }
 34 
 35         private void button4_Click(object sender, EventArgs e) //加减乘除
 36         {
 37             //事件源转换为按钮
 38             Button btn = sender as Button;
 39             //上次按了数字
 40             if (prev == 1)
 41             {
 42                 txttop.Text += txtbottom.Text + btn.Text;//进行显示拼接
 43                 switch (prevysf)
 44                 {
 45                     case "+":
 46                         zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
 47                         break;
 48                     case "-":
 49                         zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
 50                         break;
 51                     case "*":
 52                         zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
 53                         break;
 54                     case "/":
 55                         zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
 56                         break;
 57                 }
 58 
 59                 txtbottom.Text = zjjg.ToString();
 60             }
 61             //上次按了运算符
 62             else
 63             {
 64 
 65                 if (txttop.Text != "")
 66                 {
 67                     string s = txttop.Text;
 68                     s = s.Substring(0, s.Length - 1);
 69                     s = s + btn.Text;
 70                     txttop.Text = s;
 71                 }
 72                 else
 73                 {
 74                     
 75                     txttop.Text = txtbottom.Text + btn.Text;
 76                 }
 77             }
 78             //点击了运算符
 79             prev = 2;
 80             //记录下运算符
 81             prevysf = btn.Text;
 82         }
 83 
 84         private void button9_Click(object sender, EventArgs e) //清空
 85         {
 86             txttop.Text = "";
 87             txtbottom.Text = "0";
 88             prevysf = "+";
 89             prev = 0;
 90             zjjg = 0;
 91         }
 92 
 93         private void button11_Click(object sender, EventArgs e) //等于
 94         {
 95             //事件源转换为按钮
 96             Button btn = sender as Button;
 97                 switch (prevysf)
 98                 {
 99                     case "+":
100                         zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
101                         break;
102                     case "-":
103                         zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
104                         break;
105                     case "*":
106                         zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
107                         break;
108                     case "/":
109                         zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
110                         break;
111                 }
112                 txtbottom.Text = zjjg.ToString();
113                 txttop.Text = "";
114                 prevysf = "";               
115                 prev = 2;
116         }
117 
118         private void button17_Click(object sender, EventArgs e) //回退一个
119         {
120             string s = txtbottom.Text;
121             if (s.Length >1)
122             {
123                 s = s.Substring(0, s.Length - 1);
124                 txtbottom.Text = s;
125             }
126             else if(s.Length==1)
127             {
128                 txtbottom.Text = "0";
129             }
130         }
131 
132         private void Form1_Load(object sender, EventArgs e)
133         {
134 
135         }
136     }
137 }

 

posted @ 2016-09-02 16:33  无毒不羁  阅读(516)  评论(0编辑  收藏  举报