Winform——计算器

namespace 计算器2._0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面(用来存储判断是否刚刚点过运算符)
        private string Biaodashi; //记录运算符之前的表达式(在第一栏)
        private decimal Sum;//记录之前计算的结果(在第二栏)
        private string Preyunsuanfu;//记录之前的运算符
        private decimal d2;//存下面的数的成员变量

        private void button32_Click(object sender, EventArgs e)//其它数字按钮
        {
            Button btn = (Button) sender; //sender为各自对应的类,这里为对应每个按钮
            if (Isok) //如果第一次进入界面或者之前点过运算符
            {
                textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容
                Isok = false;//将Isok改成false的意思:不是刚刚点完运算符了,也不是刚进入界面,是为了进入else
                d2 = decimal.Parse(textBox2.Text);
            }
            else
            {
                textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
            }
        }

        private void button36_Click(object sender, EventArgs e)//0按钮
        {
            Button btn = (Button)sender; //sender为各自对应的类,这里为对应每个按钮
            if (Isok) //如果第一次进入界面或者之前点过运算符
            {
                textBox2.Text = btn.Text; //下面那一栏文本框的内容改成按钮上的内容

            }
            else
            {
                textBox2.Text = textBox2.Text + btn.Text;//如果不是刚进入,之后的数字便一直加上刚才所点的按钮的内容
            }
        }

        private void button44_Click(object sender, EventArgs e)//运算符
        {
            Button btn = (Button)sender;//sender为各自对应的类,这里为对应每个按钮
            string yunsuanfu = btn.Text; //将按钮上的内容赋值给yunsuanfu;
            if (Preyunsuanfu == null)
            {
                Biaodashi =  textBox2.Text;
                Sum = decimal.Parse(textBox2.Text);
            }
            else
            {
                if (!Isok) //如果刚刚点过运算符,这一块也就不需要运算了.反之则需要运算.
                {   // !Isok 代表的是刚刚没点过运算符,这样才会运算下面的代码.
                    if (Preyunsuanfu == "+") //如果刚才的运算符是加号
                    {
                        Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
                    }
                    if (Preyunsuanfu == "-")
                    {
                        Sum = Sum - decimal.Parse(textBox2.Text);
                    }
                    if (Preyunsuanfu == "*")
                    {
                        Sum = Sum * decimal.Parse(textBox2.Text);
                    }
                    if (Preyunsuanfu == "/")
                    {
                        Sum = Sum / decimal.Parse(textBox2.Text);
                    }
                    if (Preyunsuanfu == "%")
                    {
                        Sum = Sum % decimal.Parse(textBox2.Text);
                    }
                    Biaodashi = Biaodashi + Preyunsuanfu + textBox2.Text;//之前有运算符的话  第一栏的值变为  之前的表达式+刚才点进去的运算符+刚才输入的值
                    textBox2.Text = Sum.ToString(); //第二栏的值变为结果
                }

            }
            textBox1.Text = Biaodashi + yunsuanfu;//第一栏显示的文本为表达式+当前输入的运算符
            Preyunsuanfu = yunsuanfu;//将yunsuanfu的值赋给   记录上一次的运算符;
            Isok = true; //只要Isok是ture,就会把刚才的值清空重新输入现在按钮上的值

        }

        private void button8_Click(object sender, EventArgs e) //清空键
        {   //初始化所有状态
            textBox1.Text = "";
            textBox2.Text = "0";
            Isok = true;
            Preyunsuanfu = null;
            Sum = 0;
            Biaodashi = "";
            d2 = 0;
        }

        private void button6_Click(object sender, EventArgs e)//撤销键
        {
            if (!Isok) //如果刚刚没点过运算符才能执行下面这一步
            {
                if (textBox2.Text.Length == 1)//如果第二栏的文本长度为1
                {
                    textBox2.Text = "0"; //点击撤销就会变成0
                    Isok = true;//只要一撤成0,就将Isok改成true.  这样0才不会累加,相当于重新进入界面。
                }
                else
                {
                    textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
                }
            }

        }

        private void button28_Click(object sender, EventArgs e) //小数点
        {
            if(!textBox2.Text.Contains("."))//之前有小数点了便不会执行下一步
            {
                textBox2.Text = textBox2.Text + ".";
                Isok = false;//不会清空第二行
            }
        }
      // private bool d3 = true;//是否点过其他数字
        private void button30_Click(object sender, EventArgs e) //等号
       {
           Button btn = (Button)sender;

            textBox1.Text = ""; //第一栏为空 

            //计算之前的结果
            if (Preyunsuanfu == "+") //如果刚才的运算符是加号
            {
                Sum = Sum + decimal.Parse(textBox2.Text);//算出的结果就为之前算出来的加上刚点上去的
            }
            if (Preyunsuanfu == "-")
            {
                Sum = Sum - decimal.Parse(textBox2.Text);
            }
            if (Preyunsuanfu == "*")
            {
                Sum = Sum * decimal.Parse(textBox2.Text);
            }
            if (Preyunsuanfu == "/")
            {
                Sum = Sum / decimal.Parse(textBox2.Text);
            }
            if (Preyunsuanfu == "%")
            {
                Sum = Sum % decimal.Parse(textBox2.Text);
            }

            textBox2.Text = Sum.ToString();//第二栏显示为之前的结果

            //初始化对象
            Isok = true;
            Biaodashi = "";
            Preyunsuanfu = null;

            Sum = d2+decimal.Parse(textBox2.Text);

            //还没有继续点等号出现的情况

        }

        private void button9_Click(object sender, EventArgs e)  //正负号
        {
            if (!Isok) //不是刚点过运算符也不是刚进入界面,即如果是结果的话就不会执行下面的代码
            {
                if (decimal.Parse(textBox2.Text) > 0)
                {
                    textBox2.Text = "-" + textBox2.Text;//如果大于零就添加负号
                }
                else
                {
                    textBox2.Text = textBox2.Text.Substring(1);//如果小于零就把负号去掉
                }
            }
        }
        private string m;
        private void button4_Click(object sender, EventArgs e) //M+  将textbox2的值存到了M+里面
        {
            if (textBox2.Text == "0")
            {

            }
            else
            {
                textBox3.Text = "M";
            }
            m = textBox2.Text;
        }

        private void button2_Click(object sender, EventArgs e)//MR 点击MR显示M+保存的数;
        {
            textBox2.Text = m;
        }

        private void button5_Click(object sender, EventArgs e)//M- 之前M+保存的数减去你输入的数
        {
            if(!Isok)//不是刚刚点过运算符
            {
            Sum=decimal.Parse(m)-decimal.Parse(textBox2.Text);
            textBox2.Text = Sum.ToString();
            }
        }

        private double ss;
        private void button10_Click(object sender, EventArgs e)//根号
        {
           ss = Math.Sqrt(double.Parse(textBox2.Text));
           textBox1.Text = "sqrt" + "(" + textBox2.Text + ")";
           textBox2.Text = ss.ToString();
           Isok = true;
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
        private double fenshu;
        private void button41_Click(object sender, EventArgs e)//几分之几
        {
            fenshu = 1 / double.Parse(textBox2.Text);
            textBox1.Text = "reciproc" + "("+textBox2.Text+")";//第一栏显示的
            textBox2.Text = fenshu.ToString();//第二栏显示的

        }

        private void button7_Click(object sender, EventArgs e)//CE键和C键功能一样
        {
            //初始化所有状态
            textBox1.Text = "";
            textBox2.Text = "0";
            Isok = true;
            Preyunsuanfu = null;
            Sum = 0;
            Biaodashi = "";
        }

        private void button1_Click(object sender, EventArgs e) //MC 清空M+保存的值
        {
            textBox3.Text = "";
            m = "0";
        }

    }
}
时间: 2024-11-29 03:27:47

Winform——计算器的相关文章

Winform——计算器局部功能(+-*/%)

namespace 计算器2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面 private string Biaodashi; //记录运算符之前的表达式(在第一栏) private decimal Sum;//记录之前计算的结果(在第二栏) private string Pre

Winform——计算器(大部分功能)

namespace 计算器2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool Isok = true;//记录刚刚是否点过运算符,或是否第一次进入界面 private string Biaodashi; //记录运算符之前的表达式(在第一栏) private decimal Sum;//记录之前计算的结果(在第二栏) private string Pre

winform计算器练习

临近年关,今日在学习的过程中感觉甚是无聊,便想用C#来开发一个简易的计算器程序,这里记录下今日下午的实现过程,同时也记录下自己的第一遍博客. 一,需求 首先我们先来决定我们的计算器要实现什么功能 功能需求:1.能够实现加.减.乘.除.求余等两个操作数的运算,以及开方.平方单个操作数的运算 2.能够清除错误的输入,能够实现清零操作 显示需求:能够显示操作数与运算内容,显示结果 二.设计界面 1.在明白我们的功能需求后,我们来设计界面,界面主要包括三个部分,用于显示的两个textBox,以及数字键B

winform 计算器

1 bool a; //判断上一次按键是加减乘除还是数字 2 string c = ""; //判断加减乘除操作 3 decimal f;//记录第一个值以及接收运算结果 4 /// <summary> 5 /// 数字按键 6 /// </summary> 7 /// <param name="sender"></param> 8 /// <param name="e"></pa

winform 计算器 两步走

namespace WindowsFormsApplication4 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } //记录是否刚点过运算符 private bool isok = true; //记录结果 private decimal Sum; //记录上一次的运算符 private string PreYunsuanfu; //记录表达式 private string Biao

winform计算器

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace FirstForm { public partial class JiSuanQi : Form { publi

Winform——计算器进制转换

namespace 进制转换2._0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string Shizhuaner(int a, int jinzhi) //十转二 { string jieguo = ""; while (true) { string s = (a % jinzhi).ToString(); //s的值为a%2后的数,因为进制是2. ji

1.C#WinForm基础制作简单计算器

利用c#语言编写简单计算器: 源码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 简单计算器 { public partial class Form1 : Form { public For

[原][C#][winForm]分级基金折溢价WinForm网络计算器

分级基金折溢价WinForm网络计算器 通过子/母基金代码,从 [ 东方财富网,天天基金网,新浪 ] 抓取分级基金的子母基金数据(代码,名称,净值,价格), 并计算出子基金(A基金,B基金)以及母基金的溢价率与折价率, 便于投资/投机客从中套利. 数据通过网站获取,使用基金净值,非估值,一般晚间网站会更新当天基金净值,不可用于实时计算. ------ 效果图: ---- 代码: 1.窗体如效果图 2.常用变量与数据抓取代码: 1 namespace fundGetAndCal 2 { 3 pub