你的位置:首页 > ASP.net教程

[ASP.net教程]C#窗体计算器


主要使用的是TextBox和button控件

 

复制代码
 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication1 12 { 13   public partial class jisuanqi : Form 14   { 15     //存储上次点击了什么按钮,0代表什么都没点击,1代表点击了数字按钮,2代表点击了运算符 16     private int prev = 0; 17     //存储中间结果 18     private decimal zjjg = 0; 19     //记录上次按的什么运算符 20     private string preysf = "+"; 21     //记录上次按的是等号 22     private int denghao = 0; 23 24 25     public jisuanqi() 26     { 27       InitializeComponent(); 28     } 29 30     private void button1_Click(object sender, EventArgs e) 31     { 32       Button btn = sender as Button; 33 34       //替换(如果下面文本框内容为0或者上次点击了运算符) 35       if (prev == 2 || TXTbottom.Text == "0") 36       { 37         TXTbottom.Text = btn.Text; 38       } 39       //追加(如果下面文本框内容不为0并且上次没有点击运算符) 40       else 41       { 42         TXTbottom.Text += btn.Text; 43       } 44 45       prev = 1; 46       47     } 48 49     private void button4_Click(object sender, EventArgs e) 50     { 51       Button btn = sender as Button; 52 53       54 55       //上次按了数字 56       if (prev == 1) 57       { 58         TXTTOP.Text += TXTbottom.Text + btn.Text; 59         switch (preysf) 60         { 61           case "+": 62             zjjg = zjjg + Convert.ToDecimal(TXTbottom.Text); 63             break; 64           case "-": 65             zjjg = zjjg - Convert.ToDecimal(TXTbottom.Text); 66             break; 67           case "*": 68             zjjg = zjjg * Convert.ToDecimal(TXTbottom.Text); 69             break; 70           case "/": 71             zjjg = zjjg / Convert.ToDecimal(TXTbottom.Text); 72             break; 73         } 74         TXTbottom.Text = zjjg.ToString(); 75       } 76       //上次按了运算符/// 77       else 78       { 79         string s = TXTTOP.Text; 80         if (s.Length >= 1) 81         { 82           s = s.Substring(0, s.Length - 1); 83           s = s + btn.Text; 84         } 85         else 86         { 87           s = "0"; 88           s = s + btn.Text; 89         } 90         TXTTOP.Text = s; 91       } 92       //加号 93       prev = 2; 94       preysf = btn.Text; 95     } 96 97     private void button15_Click(object sender, EventArgs e) 98     { 99       TXTTOP.Text = "";100       TXTbottom.Text = "0";101       prev = 0;102       zjjg = 0;103       preysf = "+";104     }105 106     private void jisuanqi_KeyDown(object sender, KeyEventArgs e)107     {108 109 110       if (111         e.KeyCode == Keys.D0 || e.KeyCode == Keys.NumPad0 ||112         e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1 || 113         e.KeyCode == Keys.D2 || e.KeyCode == Keys.NumPad2 ||114         e.KeyCode == Keys.D3 || e.KeyCode == Keys.NumPad3 ||115         e.KeyCode == Keys.D4 || e.KeyCode == Keys.NumPad4 || 116         e.KeyCode == Keys.D5 || e.KeyCode == Keys.NumPad5 ||117         e.KeyCode == Keys.D6 || e.KeyCode == Keys.NumPad6 ||118         e.KeyCode == Keys.D7 || e.KeyCode == Keys.NumPad7 || 119         e.KeyCode == Keys.D8 || e.KeyCode == Keys.NumPad8 ||120         e.KeyCode == Keys.D9 || e.KeyCode == Keys.NumPad9 121         )122       {123         if (prev == 2 || TXTbottom.Text == "0")124         {125           string a = e.KeyData.ToString();126           TXTbottom.Text = a.Substring((a.Length-1),1); 127         }128         else129         {130           string a = e.KeyData.ToString();131           TXTbottom.Text += a.Substring((a.Length - 1), 1); 132           133         }134         prev = 1;135       }136       //else if (137       //  //e.KeyCode == Keys.Add || e.KeyCode == Keys.Subtract || e.KeyCode == Keys.Multiply || e.KeyCode == Keys.Divide||138       //  e.KeyCode==Keys.Shift&&e.KeyCode==Keys.D8139       //  )140       //{141       //  MessageBox.Show(e.KeyData.ToString());142       //}143       else if(e.KeyCode==Keys.Back)144       {145         string s = TXTbottom.Text;146         if (s.Length >= 1)147         {148           s = s.Substring(0, s.Length - 1);149         }150         else151         {152           s = "";153         }154         TXTbottom.Text = s;155       }156     }157 158     private void button17_Click(object sender, EventArgs e)159     {160       string s = TXTbottom.Text;161       if (s.Length >= 1)162       {163         s = s.Substring(0, s.Length - 1);164       }165       else166       {167         s = "";168       }169       TXTbottom.Text = s;170     }171 172     private void button14_Click(object sender, EventArgs e)//等号173     {174       Button btn = sender as Button;175 176       //上次按了数字177       if (prev == 1)178       {179         TXTTOP.Text += TXTbottom.Text + btn.Text;180         switch (preysf)181         {182           case "+":183             zjjg = zjjg + Convert.ToDecimal(TXTbottom.Text);184             break;185           case "-":186             zjjg = zjjg - Convert.ToDecimal(TXTbottom.Text);187             break;188           case "*":189             zjjg = zjjg * Convert.ToDecimal(TXTbottom.Text);190             break;191           case "/":192             zjjg = zjjg / Convert.ToDecimal(TXTbottom.Text);193             break;194         }195         TXTbottom.Text = zjjg.ToString();196       }197       //上次按了运算符///198       else199       {200         string s = TXTTOP.Text;201         if (s.Length >= 1)202         {203           s = s.Substring(0, s.Length - 1);204           s = s + btn.Text;205         }206         else207         {208           s = "0";209           s = s + btn.Text;210         }211         TXTbottom.Text = s;212       }213       //加号214       prev = 2;215       preysf = btn.Text;216       TXTTOP.Text = "";217       zjjg = 0;218       preysf = "+";219       denghao = 1;220     }221 222     private void jisuanqi_Load(object sender, EventArgs e)223     {224 225     }226   }227 }