• winfrom实现简单计算器V2版本


    前面,使用winform实现了个简单的计算器,今天,再来给大家看一个稍微复杂点的计算器,效果图如下:
    在这里插入图片描述
    在这里插入图片描述
    包括归零,退格,加减乘除都已经实现,如果想要继续扩展的可以在稍微改改即可。
    现在看看怎么实现的:
    1.先从工具箱里面拉出来一个这样的窗体:
    在这里插入图片描述
    2.归零的方法:

    private void qingchu_Click(object sender, EventArgs e)
            {
                this.lbljieguo.Text = "0";
                sb = new StringBuilder("");
            }
    

    3.退格的方法:

     //退格的按钮
            private void tuige_Click(object sender, EventArgs e)
            {
                //判断当前能不能点击退格
    
                //判断显示框是否有值,有值的话可以删除,没有值的话提示不能删除
                if (this.lbljieguo.Text.Length > 0)
                {
                    char ch = 'a';      //保存符号
    
                    //遍历字符串
                    foreach (char c in sb.ToString())
                    {
                        ch = c;     //最后一个值放在ch里面
                    }
                    //判断最后一个是否是+-*/%
                    if (ch != '+')
                    {
                        //如果是,不能动num1和num2,否则可以动
    
                        if (flag == false)
                        {
                            num1 = new StringBuilder(num1.ToString().Substring(0, num1.Length - 1));
    
                        }
                        else
                        {
                            num2 = new StringBuilder(num2.ToString().Substring(0, num2.Length - 1));
                        }
    
                    }
                    ji = false;
                    this.lbljieguo.Text = sb.ToString().Substring(0, this.lbljieguo.Text.Length - 1);
                    sb = new StringBuilder(this.lbljieguo.Text);
                }
                else
                {
                    MessageBox.Show("显示框都没有值,你删啥?", "提示信息");
                }
    
    
            }
    

    4.(1 2 3 4 5 6 7 8 9 0)的点击事件:

     //第一个数
            StringBuilder num1 = new StringBuilder();
            //第二个数
            StringBuilder num2 = new StringBuilder();
            //判断是否是第一次输入
            bool flag = false;
            //运算符
            string fu = "";
            //当计算完结果时,不能退格
            bool ji = false;
    
    
            StringBuilder sb = new StringBuilder();
            //7
            private void btn7_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(7);
                }
                else
                {
    
                    num2.Append(7);
                }
                sb.Append(7);
                this.lbljieguo.Text = sb.ToString();
            }
    
            //8
            private void btn8_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(8);
                }
                else
                {
    
                    num2.Append(8);
                }
                sb.Append(8);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn9_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(9);
                }
                else
                {
                    num2.Append(9);
                }
                sb.Append(9);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn4_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(4);
                }
                else
                {
    
                    num2.Append(4);
                }
                sb.Append(4);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn5_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(5);
                }
                else
                {
    
                    num2.Append(5);
                }
                sb.Append(5);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn6_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(6);
                }
                else
                {
    
                    num2.Append(6);
                }
                sb.Append(6);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn1_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(1);
                }
                else
                {
    
                    num2.Append(1);
                }
                sb.Append(1);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn2_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(2);
                }
                else
                {
    
                    num2.Append(2);
                }
                sb.Append(2);
                this.lbljieguo.Text = sb.ToString();
            }
    
            private void btn3_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(3);
                }
                else
                {
    
                    num2.Append(3);
                }
                sb.Append(3);
                this.lbljieguo.Text = sb.ToString();
            }
             private void btn0_Click(object sender, EventArgs e)
            {
                if (flag == false)
                {
    
                    num1.Append(0);
                }
                else
                {
    
                    num2.Append(0);
                }
                sb.Append(0);
                this.lbljieguo.Text = sb.ToString();
            }
    

    5.加减乘除的点击事件:

    private void btnchu_Click(object sender, EventArgs e)
            {
                flag = true;
                sb.Append("/");
                this.lbljieguo.Text = sb.ToString();
                fu = "/";
            }
             private void btnyu_Click(object sender, EventArgs e)
            {
                flag = true;
                sb.Append("%");
                this.lbljieguo.Text = sb.ToString();
                fu = "%";
            }
            private void btnjia_Click(object sender, EventArgs e)
            {
                flag = true;
                sb.Append("+");
                this.lbljieguo.Text = sb.ToString();
                fu = "+";
    
            }
              private void btnjian_Click(object sender, EventArgs e)
            {
                flag = true;
                sb.Append("-");
                this.lbljieguo.Text = sb.ToString();
                fu = "-";
            }
            private void btncheng_Click(object sender, EventArgs e)
            {
                flag = true;
                sb.Append("*");
                this.lbljieguo.Text = sb.ToString();
                fu = "*";
            }
    

    6.等于的方法:

     //等于的按钮
            private void btndeng_Click(object sender, EventArgs e)
            {
                //string xianshi = sb.ToString();
                switch (fu)
                {
                    case "+":
                        this.lbljieguo.Text = (int.Parse(num1.ToString()) + int.Parse(num2.ToString())).ToString();
                        break;
                    case "-":
                        this.lbljieguo.Text = (int.Parse(num1.ToString()) - int.Parse(num2.ToString())).ToString();
    
                        break;
                    case "*":
                        this.lbljieguo.Text = (int.Parse(num1.ToString()) * int.Parse(num2.ToString())).ToString();
    
                        break;
                    case "/":
                        this.lbljieguo.Text = (int.Parse(num1.ToString()) / int.Parse(num2.ToString())).ToString();
    
                        break;
                    case "%":
                        this.lbljieguo.Text = (int.Parse(num1.ToString()) % int.Parse(num2.ToString())).ToString();
                        break;
                }
    
                num1 = new StringBuilder("");
                num2 = new StringBuilder("");
                sb = new StringBuilder("");
                flag = false;
                ji = true;     //显示的是结果
    
            }
    

    整个的实现方法以及代码都已经给出,不做伸手党,自己动脑思考思考,加油啊,在编码路上的你们~~
    在这里插入图片描述

  • 相关阅读:
    小组件
    rabbitMQ操作
    爬虫
    爬虫相关
    HTTP相关
    Python基本数据类型
    机器学习技法 之 支持向量回归(SVR)
    机器学习基石 之 线性回归(Linear Regression)
    机器学习技法 之 径向基函数网络(RBF Network)
    各个常用的排序算法的适用场景详细分析
  • 原文地址:https://www.cnblogs.com/a1111/p/12815904.html
Copyright © 2020-2023  润新知