首页 > 代码库 > winform 计算器

winform 计算器

技术分享

技术分享
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 计算器1{    public partial class Form1 : Form    {        //存储上次点击了什么按钮,0代表什么都没点击,1代表点击了数字按钮,2代表点击了运算符        private int prev = 0;        //存储计算的中间结果        private decimal zj = 0;        //记录上次按的什么运算符        private string prevysf = "+";        public Form1()        {            InitializeComponent();        }        //数字按钮        private void button15_Click(object sender, EventArgs e)        {            //将事件源转换为按钮            Button btn = sender as Button;            //替换(如果下面文本框内容为0或者上次点击了运算符)            if (prev == 2 || txtbottom.Text == "0")            {                txtbottom.Text = btn.Text;            }            //追加(如果下面文本框内容不为0并且上次没有点击运算符)            else            {                txtbottom.Text += btn.Text;            }            //点击了数字按钮            prev = 1;        }        //运算符按钮        private void button16_Click(object sender, EventArgs e)        {            Button btn = sender as Button;            //上次按了数字            if (prev == 1)            {                txttop.Text += txtbottom.Text + btn.Text;                switch (prevysf)                {                    case "+":                        zj = zj + Convert.ToDecimal(txtbottom.Text);                        break;                    case "-":                        zj = zj - Convert.ToDecimal(txtbottom.Text);                        break;                    case "*":                        zj = zj * Convert.ToDecimal(txtbottom.Text);                        break;                    case "/":                        zj = zj / Convert.ToDecimal(txtbottom.Text);                        break;                }                txtbottom.Text = zj.ToString();            }            //上次按了运算符            else            {                string s = txttop.Text;                s = s.Substring(0, s.Length - 1);                s = s + btn.Text;                txttop.Text = s;            }            //点击了运算符            prev = 2;            //记录下运算符            prevysf = btn.Text;        }             //清零        private void button1_Click(object sender, EventArgs e)        {            txttop.Text = "";            txtbottom.Text = "0";            prev = 0;            zj = 0;            prevysf = "+";        }        //清零        private void button2_Click(object sender, EventArgs e)        {            txtbottom.Text = "0";        }        //等号        private void button20_Click(object sender, EventArgs e)        {            Button btn = sender as Button;            txttop.Text += txtbottom.Text + btn.Text;            switch (prevysf)            {                case "+":                    zj = zj + Convert.ToDecimal(txtbottom.Text);                    break;                case "-":                    zj = zj - Convert.ToDecimal(txtbottom.Text);                    break;                case "*":                    zj = zj * Convert.ToDecimal(txtbottom.Text);                    break;                case "/":                    zj = zj / Convert.ToDecimal(txtbottom.Text);                    break;            }            txtbottom.Text = zj.ToString();            txttop.Text = "";            zj = 0;        }        //小数点        private void button19_Click(object sender, EventArgs e)        {            if(txtbottom.Text.Contains(".")==false)                txtbottom.Text += ".";        }        //退格        private void button3_Click(object sender, EventArgs e)        {            txtbottom.Text = txtbottom.Text.Substring(0,txtbottom.TextLength-1);        }        //±号控制        private void button17_Click(object sender, EventArgs e)        {            if(!txtbottom.Text.Contains("-"))           txtbottom.Text= txtbottom.Text.Insert(0, "-");           else if (txtbottom.Text.Contains("-"))                txtbottom.Text = txtbottom.Text.Replace("-","");        }        //键盘控制        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)        {            // if it is a hotkey, return true; otherwise, return false            switch (keyData)            {                case Keys.NumPad0:                    //焦点定位到控件button_num_0上,即数字0键上                    button18.Focus();                    //执行按钮点击操作                    button18.PerformClick();                    return true;                case Keys.NumPad1:                    button13.Focus();                    button13.PerformClick();                    return true;                case Keys.NumPad2:                    button14.Focus();                    button14.PerformClick();                    return true;                case Keys.NumPad3:                    button15.Focus();                    button15.PerformClick();                    return true;                case Keys.NumPad4:                    button9.Focus();                    button9.PerformClick();                    return true;                case Keys.NumPad5:                    button10.Focus();                    button10.PerformClick();                    return true;                case Keys.NumPad6:                    button11.Focus();                    button11.PerformClick();                    return true;                case Keys.NumPad7:                    button5.Focus();                    button5.PerformClick();                    return true;                case Keys.NumPad8:                    button6.Focus();                    button6.PerformClick();                    return true;                case Keys.NumPad9:                    button7.Focus();                    button7.PerformClick();                    return true;                case Keys.Back:                    button3.Focus();                    button3.PerformClick();                    return true;                case Keys.Divide:                    button4.Focus();                    button4.PerformClick();                    return true;                case Keys.Multiply:                    button8.Focus();                    button8.PerformClick();                    return true;                case Keys.Subtract:                    button12.Focus();                    button12.PerformClick();                    return true;                case Keys.Add:                    button16.Focus();                    button16.PerformClick();                    return true;                case Keys.Enter:                    button20.Focus();                    button20.PerformClick();                    return true;                case Keys.Delete:                    button19.Focus();                    button19.PerformClick();                    return true;                //......                default:                    break;            }            return base.ProcessCmdKey(ref msg, keyData);        }         }}
View Code

 

winform 计算器