65.9K
CodeProject 正在变化。 阅读更多。
Home

通过Visual C实现的计算器

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.79/5 (9投票s)

2010年5月14日

CPOL

2分钟阅读

viewsIcon

30418

downloadIcon

1

一篇演示如何构建Windows窗体计算器的文章。

使用 Visual C# 构建计算器

前言

.NET Framework 为计算目的提供了大量的 Math API。 我们的目标是使用一些基本的数学运算和这些 API 来构建一个计算器。 通常,在使用 Windows 窗体时,我们使用按钮来触发需要事件处理程序的事件。 但是,如何使用 Button 控件将数字字符输入到 TextBox 控件中,然后进一步使用其他按钮来执行对输入输入所需的操作? 首先,有 10 个,或者 0 – 9 个数字,它们的 text 属性必须设置为这些整数才能显示在按钮上。 其他按钮需要将其文本属性设置为用户单击它们时要执行的操作。 对于所有这些按钮,我们应该对它们进行分组。 这意味着我们需要使用两个 GroupBox 控件来包含输入字段和 Button 控件。 然后,我们需要声明一些局部变量,特别是用于指示操作的状态。 听起来像布尔数据类型。 然后,我们需要编写一个方法来计算执行的特定操作的总计。 因为手头会有几种不同类型的案例,所以我们需要使用 switch 语句。

检查这段代码,它会被编译为一个控制台应用程序

using System;
public class Program
 {  
   public static void Main()
   {
    Console.WriteLine("Abs({0}) = {1}", -55, Math.Abs(-55));
    Console.WriteLine("Ceiling({0}) = {1}", 55.3, Math.Ceiling(55.3));
    Console.WriteLine("Pow({0},{1}) = {2}", 2, 16, Math.Pow(2, 16));
    Console.WriteLine("Round({0},{1}) = {2}",
    10.55358, 2, Math.Round(10.55358, 2));
    Console.WriteLine("Sin({0}) = {1}", 323.333, Math.Sin(323.333));
    Console.WriteLine("Cos({0}) = {1}", 323.333, Math.Cos(323.333));
    Console.WriteLine("Tan({0}) = {1}", 323.333, Math.Tan(323.333));
    Console.WriteLine("Sqrt({0}) = {1}", 65536, Math.Sqrt(65536));
      }
     }

在这里,我们直接使用 .NET Framework Math API。 很明显,输入 API 并插入一个值非常简单。 这是结果

Abs(-55) = 55
Ceiling(55.3) = 56
Pow(2,16) = 65536
Round(10.55358,2) = 10.55
Sin(323.333) = 0.248414709883854
Cos(323.333) = -0.968653772982546
Tan(323.333) = -0.256453561440193
Sqrt(65536) = 256

现在,如果选择获取 65,536 (2 的 16 次方) 的平方根,我们可以只按一个按钮

                Capture.PNG   

我使用这个例子是因为一个数据位有两个可能的值:1 或 0。一个字节中有 8 位。2 的 8 次方 = 256,即 16 的平方。 65,536 等于一个内存段。无论如何,这是计算器的代码。 尝试通过添加一些三角函数来扩展它。 这是本文的目的。 此代码未拆分为部分类。 但是,可下载的文件是。 将解决方案容器中的文件解压缩到 Projects 目录中的一个新文件夹中,然后双击解决方案文件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;



    public  class Form1 : Form
    {
      private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.TextBox txtInput;
        private System.Windows.Forms.GroupBox groupBox2;
        private System.Windows.Forms.Button button23;
        private System.Windows.Forms.Button button22;
        private System.Windows.Forms.Button button21;
        private System.Windows.Forms.Button button20;
        private System.Windows.Forms.Button button19;
        private System.Windows.Forms.Button button18;
        private System.Windows.Forms.Button button17;
        private System.Windows.Forms.Button button16;
        private System.Windows.Forms.Button button15;
        private System.Windows.Forms.Button button14;
        private System.Windows.Forms.Button button13;
        private System.Windows.Forms.Button button12;
        private System.Windows.Forms.Button button11;
        private System.Windows.Forms.Button button10;
        private System.Windows.Forms.Button button9;
        private System.Windows.Forms.Button button8;
        private System.Windows.Forms.Button button7;
        private System.Windows.Forms.Button button6;
        private System.Windows.Forms.Button button5;
        private System.Windows.Forms.Button button4;
        private System.Windows.Forms.Button button3;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button1;

         public Form1()
        {
            InitializeComponent();
        }
        //variables to hold operands
        private double valHolder1;
        private double valHolder2;
        //Varible to hold temporary values
        private double tmpValue;
        //True if "." is use else false
        private bool hasDecimal = false;
        private bool inputStatus = true;
        //variable to hold Operater
        private string calcFunc;

     private System.ComponentModel.IContainer components = null;

        /// 
        /// Clean up any resources being used.
        /// 
        /// true if managed resources should be disposed; otherwise, false.
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        

        /// 
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// 
        private void InitializeComponent()
        {
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.txtInput = new System.Windows.Forms.TextBox();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
            this.button23 = new System.Windows.Forms.Button();
            this.button22 = new System.Windows.Forms.Button();
            this.button21 = new System.Windows.Forms.Button();
            this.button20 = new System.Windows.Forms.Button();
            this.button19 = new System.Windows.Forms.Button();
            this.button18 = new System.Windows.Forms.Button();
            this.button17 = new System.Windows.Forms.Button();
            this.button16 = new System.Windows.Forms.Button();
            this.button15 = new System.Windows.Forms.Button();
            this.button14 = new System.Windows.Forms.Button();
            this.button13 = new System.Windows.Forms.Button();
            this.button12 = new System.Windows.Forms.Button();
            this.button11 = new System.Windows.Forms.Button();
            this.button10 = new System.Windows.Forms.Button();
            this.button9 = new System.Windows.Forms.Button();
            this.button8 = new System.Windows.Forms.Button();
            this.button7 = new System.Windows.Forms.Button();
            this.button6 = new System.Windows.Forms.Button();
            this.button5 = new System.Windows.Forms.Button();
            this.button4 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.button1 = new System.Windows.Forms.Button();
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.SuspendLayout();
            // 
            // groupBox1
            // 
            this.groupBox1.Controls.Add(this.txtInput);
            this.groupBox1.Location = new System.Drawing.Point(39, 28);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(274, 34);
            this.groupBox1.TabIndex = 0;
            this.groupBox1.TabStop = false;
            // 
            // txtInput
            // 
            this.txtInput.Location = new System.Drawing.Point(7, 8);
            this.txtInput.Name = "txtInput";
            this.txtInput.Size = new System.Drawing.Size(261, 20);
            this.txtInput.TabIndex = 0;
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.button23);
            this.groupBox2.Controls.Add(this.button22);
            this.groupBox2.Controls.Add(this.button21);
            this.groupBox2.Controls.Add(this.button20);
            this.groupBox2.Controls.Add(this.button19);
            this.groupBox2.Controls.Add(this.button18);
            this.groupBox2.Controls.Add(this.button17);
            this.groupBox2.Controls.Add(this.button16);
            this.groupBox2.Controls.Add(this.button15);
            this.groupBox2.Controls.Add(this.button14);
            this.groupBox2.Controls.Add(this.button13);
            this.groupBox2.Controls.Add(this.button12);
            this.groupBox2.Controls.Add(this.button11);
            this.groupBox2.Controls.Add(this.button10);
            this.groupBox2.Controls.Add(this.button9);
            this.groupBox2.Controls.Add(this.button8);
            this.groupBox2.Controls.Add(this.button7);
            this.groupBox2.Controls.Add(this.button6);
            this.groupBox2.Controls.Add(this.button5);
            this.groupBox2.Controls.Add(this.button4);
            this.groupBox2.Controls.Add(this.button3);
            this.groupBox2.Controls.Add(this.button2);
            this.groupBox2.Controls.Add(this.button1);
            this.groupBox2.Location = new System.Drawing.Point(39, 80);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(274, 223);
            this.groupBox2.TabIndex = 1;
            this.groupBox2.TabStop = false;
            // 
            // button23
            // 
            this.button23.Location = new System.Drawing.Point(203, 186);
            this.button23.Name = "button23";
            this.button23.Size = new System.Drawing.Size(40, 23);
            this.button23.TabIndex = 22;
            this.button23.Text = "=";
            this.button23.UseVisualStyleBackColor = true;
            this.button23.Click += new System.EventHandler(this.button23_Click);
            // 
            // button22
            // 
            this.button22.Location = new System.Drawing.Point(157, 186);
            this.button22.Name = "button22";
            this.button22.Size = new System.Drawing.Size(39, 23);
            this.button22.TabIndex = 21;
            this.button22.Text = "+";
            this.button22.UseVisualStyleBackColor = true;
            this.button22.Click += new System.EventHandler(this.button22_Click);
            // 
            // button21
            // 
            this.button21.Location = new System.Drawing.Point(107, 186);
            this.button21.Name = "button21";
            this.button21.Size = new System.Drawing.Size(44, 23);
            this.button21.TabIndex = 20;
            this.button21.Text = ".";
            this.button21.UseVisualStyleBackColor = true;
            this.button21.Click += new System.EventHandler(this.button21_Click);
            // 
            // button20
            // 
            this.button20.Location = new System.Drawing.Point(57, 187);
            this.button20.Name = "button20";
            this.button20.Size = new System.Drawing.Size(43, 23);
            this.button20.TabIndex = 19;
            this.button20.Text = "+/-";
            this.button20.UseVisualStyleBackColor = true;
            this.button20.Click += new System.EventHandler(this.button20_Click);
            // 
            // button19
            // 
            this.button19.Location = new System.Drawing.Point(7, 187);
            this.button19.Name = "button19";
            this.button19.Size = new System.Drawing.Size(44, 23);
            this.button19.TabIndex = 18;
            this.button19.Text = "0";
            this.button19.UseVisualStyleBackColor = true;
            this.button19.Click += new System.EventHandler(this.button19_Click);
            // 
            // button18
            // 
            this.button18.Location = new System.Drawing.Point(203, 145);
            this.button18.Name = "button18";
            this.button18.Size = new System.Drawing.Size(40, 23);
            this.button18.TabIndex = 17;
            this.button18.Text = "1/x";
            this.button18.UseVisualStyleBackColor = true;
            this.button18.Click += new System.EventHandler(this.button18_Click);
            // 
            // button17
            // 
            this.button17.Location = new System.Drawing.Point(157, 145);
            this.button17.Name = "button17";
            this.button17.Size = new System.Drawing.Size(39, 23);
            this.button17.TabIndex = 16;
            this.button17.Text = "-";
            this.button17.UseVisualStyleBackColor = true;
            this.button17.Click += new System.EventHandler(this.button17_Click);
            // 
            // button16
            // 
            this.button16.Location = new System.Drawing.Point(107, 145);
            this.button16.Name = "button16";
            this.button16.Size = new System.Drawing.Size(44, 23);
            this.button16.TabIndex = 15;
            this.button16.Text = "3";
            this.button16.UseVisualStyleBackColor = true;
            this.button16.Click += new System.EventHandler(this.button16_Click);
            // 
            // button15
            // 
            this.button15.Location = new System.Drawing.Point(58, 145);
            this.button15.Name = "button15";
            this.button15.Size = new System.Drawing.Size(42, 23);
            this.button15.TabIndex = 14;
            this.button15.Text = "2";
            this.button15.UseVisualStyleBackColor = true;
            this.button15.Click += new System.EventHandler(this.button15_Click);
            // 
            // button14
            // 
            this.button14.Location = new System.Drawing.Point(7, 145);
            this.button14.Name = "button14";
            this.button14.Size = new System.Drawing.Size(44, 23);
            this.button14.TabIndex = 13;
            this.button14.Text = "1";
            this.button14.UseVisualStyleBackColor = true;
            this.button14.Click += new System.EventHandler(this.button14_Click);
            // 
            // button13
            // 
            this.button13.Location = new System.Drawing.Point(203, 101);
            this.button13.Name = "button13";
            this.button13.Size = new System.Drawing.Size(40, 23);
            this.button13.TabIndex = 12;
            this.button13.Text = "Sqrt";
            this.button13.UseVisualStyleBackColor = true;
            this.button13.Click += new System.EventHandler(this.button13_Click);
            // 
            // button12
            // 
            this.button12.Location = new System.Drawing.Point(158, 101);
            this.button12.Name = "button12";
            this.button12.Size = new System.Drawing.Size(38, 23);
            this.button12.TabIndex = 11;
            this.button12.Text = "*";
            this.button12.UseVisualStyleBackColor = true;
            this.button12.Click += new System.EventHandler(this.button12_Click);
            // 
            // button11
            // 
            this.button11.Location = new System.Drawing.Point(106, 101);
            this.button11.Name = "button11";
            this.button11.Size = new System.Drawing.Size(45, 23);
            this.button11.TabIndex = 10;
            this.button11.Text = "6";
            this.button11.UseVisualStyleBackColor = true;
            this.button11.Click += new System.EventHandler(this.button11_Click);
            // 
            // button10
            // 
            this.button10.Location = new System.Drawing.Point(58, 102);
            this.button10.Name = "button10";
            this.button10.Size = new System.Drawing.Size(42, 23);
            this.button10.TabIndex = 9;
            this.button10.Text = "5";
            this.button10.UseVisualStyleBackColor = true;
            this.button10.Click += new System.EventHandler(this.button10_Click);
            // 
            // button9
            // 
            this.button9.Location = new System.Drawing.Point(7, 102);
            this.button9.Name = "button9";
            this.button9.Size = new System.Drawing.Size(44, 23);
            this.button9.TabIndex = 8;
            this.button9.Text = "4";
            this.button9.UseVisualStyleBackColor = true;
            this.button9.Click += new System.EventHandler(this.button9_Click);
            // 
            // button8
            // 
            this.button8.Location = new System.Drawing.Point(202, 61);
            this.button8.Name = "button8";
            this.button8.Size = new System.Drawing.Size(41, 23);
            this.button8.TabIndex = 7;
            this.button8.Text = "x^";
            this.button8.UseVisualStyleBackColor = true;
            this.button8.Click += new System.EventHandler(this.button8_Click);
            // 
            // button7
            // 
            this.button7.Location = new System.Drawing.Point(157, 60);
            this.button7.Name = "button7";
            this.button7.Size = new System.Drawing.Size(39, 23);
            this.button7.TabIndex = 6;
            this.button7.Text = "/";
            this.button7.UseVisualStyleBackColor = true;
            this.button7.Click += new System.EventHandler(this.button7_Click);
            // 
            // button6
            // 
            this.button6.Location = new System.Drawing.Point(106, 61);
            this.button6.Name = "button6";
            this.button6.Size = new System.Drawing.Size(45, 23);
            this.button6.TabIndex = 5;
            this.button6.Text = "9";
            this.button6.UseVisualStyleBackColor = true;
            this.button6.Click += new System.EventHandler(this.button6_Click);
            // 
            // button5
            // 
            this.button5.Location = new System.Drawing.Point(58, 60);
            this.button5.Name = "button5";
            this.button5.Size = new System.Drawing.Size(42, 23);
            this.button5.TabIndex = 4;
            this.button5.Text = "8";
            this.button5.UseVisualStyleBackColor = true;
            this.button5.Click += new System.EventHandler(this.button5_Click);
            // 
            // button4
            // 
            this.button4.Location = new System.Drawing.Point(7, 61);
            this.button4.Name = "button4";
            this.button4.Size = new System.Drawing.Size(44, 23);
            this.button4.TabIndex = 3;
            this.button4.Text = "7";
            this.button4.UseVisualStyleBackColor = true;
            this.button4.Click += new System.EventHandler(this.button4_Click);
            // 
            // button3
            // 
            this.button3.Location = new System.Drawing.Point(190, 19);
            this.button3.Name = "button3";
            this.button3.Size = new System.Drawing.Size(53, 23);
            this.button3.TabIndex = 2;
            this.button3.Text = "C";
            this.button3.UseVisualStyleBackColor = true;
            this.button3.Click += new System.EventHandler(this.button3_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(106, 19);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(57, 23);
            this.button2.TabIndex = 1;
            this.button2.Text = "CE";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(7, 20);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "BackSpace";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(64)))));
            this.ClientSize = new System.Drawing.Size(338, 328);
            this.Controls.Add(this.groupBox2);
            this.Controls.Add(this.groupBox1);
            this.Name = "Form1";
            this.Text = "Compute in C#";
            this.groupBox1.ResumeLayout(false);
            this.groupBox1.PerformLayout();
            this.groupBox2.ResumeLayout(false);
            this.ResumeLayout(false);

        }

   [STAThread]
   static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
private void button1_Click(object sender, EventArgs e)
        {
            string str;
            int loc;
            //Make sure the text length is > 1
            if (txtInput.Text.Length > 0)
            {
                //Get the next to last character
                str = txtInput.Text.Substring(txtInput.Text.Length - 1);
                //Check if its a decimal
                if (str == ".")
                {
                    //If it is toggle the hasDecimal flag
                    hasDecimal = false;
                }
                //Get the length of the string
                loc = txtInput.Text.Length;
                //Remove the last character, incrementing by 1
                txtInput.Text = txtInput.Text.Remove(loc - 1, 1);
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Empty the input box
            txtInput.Text = string.Empty;
            //Toggle the decimal flag
            hasDecimal = false;

        }

        private void button3_Click(object sender, EventArgs e)
        {
            //Empty the text in the input box
            txtInput.Text = string.Empty;
            //Clear out both temp values
            valHolder1 = 0;
            valHolder2 = 0;
            //Set the calc switch to empty
            calcFunc = string.Empty;
            //Toggle the hasDecimal flag
            hasDecimal = false;

        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (inputStatus)
            {
                txtInput.Text += button4.Text;
            }
            else
            {
                txtInput.Text = button4.Text;
                inputStatus = true;
            }

        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (inputStatus)
            {
                txtInput.Text += button5.Text;
            }
            else
            {
                txtInput.Text = button5.Text;
                inputStatus = true;
            }

        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (inputStatus)
            {
                txtInput.Text += button6.Text;
            }
            else
            {
                txtInput.Text = button6.Text;
                inputStatus = true;
            }

        }

        private void CalculateTotals()
        {
            valHolder2 = System.Double.Parse(txtInput.Text);
            //determine which calculation we're going to execute
            //by checking the value of calcFunc
            switch (calcFunc)
            {
                //addition
                case "Add":
                    valHolder1 = valHolder1 + valHolder2;
                    break;
                //subtraction
                case "Subtract":
                    valHolder1 = valHolder1 - valHolder2;
                    break;
                //division
                case "Divide":
                    valHolder1 = valHolder1 / valHolder2;
                    break;
                //multiplication
                case "Multiply":
                    valHolder1 = valHolder1 * valHolder2;
                    break;
                //exponents (power of)
                case "PowerOf":
                    valHolder1 = System.Math.Pow(valHolder1, valHolder2);
                    break;
            }
            //set our input area to the value of the calculation
            txtInput.Text = valHolder1.ToString();
            inputStatus = false;
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //Make sure our input box has a value
            if (txtInput.Text.Length != 0)
            {
                //Check to see if the calc func flag is empty
                if (calcFunc == string.Empty)
                {
                    //Assign the value of our input
                    //box to our holder
                    valHolder1 = System.Double.Parse(txtInput.Text);
                    //Empty the input box
                    txtInput.Text = string.Empty;
                }
                else
                {
                    //Flag isnt empty
                    //Call the calculate totals method
                    CalculateTotals();
                }
                //Assign our calc function flag
                calcFunc = "Divide";
                //Toggle the decimal flag
                hasDecimal = false;
            }

        }

        private void button8_Click(object sender, EventArgs e)
        {
            //Make sure the input box has a value
            if (txtInput.Text.Length != 0)
            {
                //Check if the calcFunc flag is empty
                if (calcFunc == string.Empty)
                {
                    //Assign the value of the input box to our variable
                    valHolder1 = System.Double.Parse(txtInput.Text);
                    //Empty the input box
                    //So the user can enter the power of value
                    txtInput.Text = string.Empty;
                }
                else
                {
                    //Call the calculate totals method
                    CalculateTotals();
                }
                //Assign our flag the value of "PowerOf"
                calcFunc = "PowerOf";
                //Reset the decimal flag
                hasDecimal = false;
            }

        }

        private void button9_Click(object sender, EventArgs e)
        {
            //Check the inputStatus
            if (inputStatus)
            {
                //Its True
                //Append values to the value
                //in the input box
                txtInput.Text += button9.Text;
            }
            else
            {
                //Value is False
                //Set the value to the value of the button
                txtInput.Text = button9.Text;
                //Toggle inputStatus to True
                inputStatus = true;
            }

        }

        private void button10_Click(object sender, EventArgs e)
        {
            if (inputStatus)
            {
                txtInput.Text += button10.Text;
            }
            else
            {
                txtInput.Text = button10.Text;
                inputStatus = true;
            }

        }

        private void button11_Click(object sender, EventArgs e)
        {
            if (inputStatus)
            {
                txtInput.Text += button11.Text;
            }
            else
            {
                txtInput.Text = button11.Text;
                inputStatus = true;
            }

        }

        private void button12_Click(object sender, EventArgs e)
        {
            if (txtInput.Text.Length != 0)
            {
                //Make sure out calc function flag is empty
                if (calcFunc == string.Empty)
                {
                    //Assign the value of the input box
                    //to our holder variable
                    valHolder1 = System.Double.Parse(txtInput.Text);
                    //Empty the input box
                    txtInput.Text = string.Empty;
                }
                else
                {
                    //Flag isnt empty
                    //Call the calculate totals method
                    CalculateTotals();
                }
                //Assign our calc function flag
                calcFunc = "Multiply";
                //Toggle the decimal flag
                hasDecimal = false;
            }

        }

        private void button13_Click(object sender, EventArgs e)
        {
            //Make sure the input box has a value
            if (txtInput.Text.Length != 0)
            {
                //Assign our variable the value in the input box
                tmpValue = System.Double.Parse(txtInput.Text);
                //Perform the square root
                tmpValue = System.Math.Sqrt(tmpValue);
                //Display the results in the input box
                txtInput.Text = tmpValue.ToString();
                //Clear the decimal flag
                hasDecimal = false;
            }
        
        }

        private void button14_Click(object sender, EventArgs e)
        {
            //Check the inputStatus
            if (inputStatus)
            {
                //Its True
                //Append values to the value
                //in the input box
                txtInput.Text += button14.Text;
            }
            else
            {
                //Value is False
                //Set the value to the value of the button
                txtInput.Text = button14.Text;
                //Toggle inputStatus to True
                inputStatus = true;
            }

        }

        private void button15_Click(object sender, EventArgs e)
        {
            //Check the inputStatus
            if (inputStatus)
            {
                //Its True
                //Append values to the value
                //in the input box
                txtInput.Text += button15.Text;
            }
            else
            {
                //Value is False
                //Set the value to the value of the button
                txtInput.Text = button15.Text;
                //Toggle inputStatus to True
                inputStatus = true;
            }

        }

        private void button16_Click(object sender, EventArgs e)
        {
            //Check the inputStatus
            if (inputStatus)
            {
                //Its True
                //Append values to the value
                //in the input box
                txtInput.Text += button16.Text;
            }
            else
            {
                //Value is False
                //Set the value to the value of the button
                txtInput.Text = button16.Text;
                //Toggle inputStatus to True
                inputStatus = true;
            }

        }

        private void button17_Click(object sender, EventArgs e)
        {
            if (txtInput.Text.Length != 0)
            {
                //Check the valueof our calculate function flag
                if (calcFunc == string.Empty)
                {
                    //Flag is empty
                    //Assign the value of our input
                    //box to our holder
                    valHolder1 = System.Double.Parse(txtInput.Text);
                    //Empty the input box
                    txtInput.Text = string.Empty;
                }
                else
                {
                    //Flag isnt empty
                    //Call our calculate totals method
                    CalculateTotals();
                }
                //assign a value to our 
                //calculate function flag
                calcFunc = "Subtract";
                //Toggle the decimal flag
                hasDecimal = false;
            }

        }

        private void button18_Click(object sender, EventArgs e)
        {
            //Make sure the input box has a value
            if (txtInput.Text.Length != 0)
            {
                //Assign the temp holder to the value of the
                //input box converted to a Double
                tmpValue = System.Double.Parse(txtInput.Text);
                //Perform a (1 divided by value calculations)
                tmpValue = 1 / tmpValue;
                //Display the results in the input box
                txtInput.Text = tmpValue.ToString();
                //Toggle the decimal flag
                hasDecimal = false;
            }

        }

        private void button19_Click(object sender, EventArgs e)
        {
            //Check the input status
            if (inputStatus)
            {
                //If true
                //Now check to make sure our
                //input box has a value
                if (txtInput.Text.Length >= 1)
                {
                    //Add our zero
                    txtInput.Text += button19.Text;
                }
            }

        }

        private void button20_Click(object sender, EventArgs e)
        {
            //Check the input status
            if (inputStatus)
            {
                //Check to make sure theres a value in the input box
                if (txtInput.Text.Length > 0)
                {
                    //Set the temp holder
                    //Its value will be (-1 times the value in the input box)
                    valHolder1 = -1 * System.Double.Parse(txtInput.Text);
                    //Display the value to the user
                    txtInput.Text = valHolder1.ToString();
                }
            }

        }

        private void button21_Click(object sender, EventArgs e)
        {
            //Check for input status (we want true)
            if (inputStatus)
            {
                //Check if it already has a decimal (if it does then do nothing)
                if (!hasDecimal)
                {
                    //Check to make sure the length is > than 1
                    //Dont want user to add decimal as first character
                    if (txtInput.Text.Length != 0)
                    {
                        //Make sure 0 isnt the first number
                        if (txtInput.Text != "0")
                        {
                            //It met all our requirements so add the zero
                            txtInput.Text += button21.Text;
                            //Toggle the flag to true (only 1 decimal per calculation)
                            hasDecimal = true;
                        }
                    }
                    else
                    {
                        //Since the length isnt > 1
                        //make the text 0.
                        txtInput.Text = "0.";
                    }
                }
            }

        }

        private void button22_Click(object sender, EventArgs e)
        {
            //Make sure out input box has a value
            if (txtInput.Text.Length != 0)
            {
                //Check the value of our function flag
                if (calcFunc == string.Empty)
                {
                    //Flag is empty
                    //Assign the value in our input
                    //box to our holder
                    valHolder1 = System.Double.Parse(txtInput.Text);
                    //Empty the input box
                    txtInput.Text = string.Empty;
                }
                else
                {
                    //Flag isnt empty
                    //Call our calculate totals method
                    CalculateTotals();
                }
                //Assign a value to our calc function flag
                calcFunc = "Add";
                //Toggle the decimal flag
                hasDecimal = false;
            }
        
        }

        private void button23_Click(object sender, EventArgs e)
        {
            if (txtInput.Text.Length != 0 && valHolder1 != 0)
            {
                //Call the calculate totals method
                CalculateTotals();
                //Clear the calcFunction value
                calcFunc = string.Empty;
                //Toggle the decimal flag
                hasDecimal = false;
            }

        }
    
}

注意 string.Empty。 这是 System.Entry 反汇编

[Serializable]
internal sealed class Empty : ISerializable
{
    // Fields
    public static readonly Empty Value = new Empty();

    // Methods
    private Empty()
    {
    }

    [SecurityCritical]
    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        if (info == null)
        {
            throw new ArgumentNullException("info");
        }
        UnitySerializationHolder.GetUnitySerializationInfo(info, 1, null, null);
    }

    public override string ToString()
    {
        return string.Empty;
    }
}
使用 Visual C 构建计算器 - CodeProject - 代码之家
© . All rights reserved.