zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    HDU 2544 最短路
    HDU 3367 Pseudoforest
    USACO 2001 OPEN
    HDU 3371 Connect the Cities
    HDU 1301 Jungle Roads
    HDU 1879 继续畅通工程
    HDU 1233 还是畅通工程
    HDU 1162 Eddy's picture
    HDU 5745 La Vie en rose
    HDU 5744 Keep On Movin
  • 原文地址:https://www.cnblogs.com/ShenG1/p/5834009.html
Copyright © 2011-2022 走看看