• 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
  • 相关阅读:
    数据挖掘实践(23):实战-- 建筑能源得分预测报告(一)
    返回闭包
    函数指针
    Rust 中的 Closure
    Moves, copies and clones in Rust
    Rust的闭包类型(Fn, FnMut, FnOne的区别)
    Clone VS Copy
    rust socket
    A simple UNIX socket listener in Rust
    【firecracker】系统启动与epoll事件循环
  • 原文地址:https://www.cnblogs.com/shadow-wolf/p/6147820.html
Copyright © 2020-2023  润新知