• 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 }
  • 相关阅读:
    Session cookie 原理
    asp.net core service mesh
    js 常用库
    asp.net core consul
    asp.net core polly
    asp.net core ocelot
    第十五章 享元模式 Flyweight
    第十四章 策略模式 Strategy
    mysql 主从复制
    mysql 执行计划
  • 原文地址:https://www.cnblogs.com/ShenG1/p/5834009.html
Copyright © 2020-2023  润新知