论坛首页 编程语言技术论坛

手机多功能计算器源码

浏览 2790 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-05   最后修改:2010-03-02
    细算起来,学习C#快有一周的时间了吧,简单做了个计算器的小例子。不足之处,还希望大家多多指导。
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 WindowsCalculator
{
    public partial class Form1 : Form
    {
        //构造器
        public Form1()
        {
            InitializeComponent();
            this.initializeValues();
        }

        //定义缓存变量
        public int resultValue;
        public int currentValue;
        private Operation cachedOperation;

        // 做初始化工作
        public void initializeValues()
        {
            this.resultValue = 0;
            this.currentValue = 0;
            this.cachedOperation = Operation.None;
        }

        // 显示当前正在输入的值
        public void DisplayCurrentValue()
        {
            this.textBox1.Text = this.currentValue.ToString();
        }
        // 显示已有结果
        public void DisplayResultValue()
        {
            this.textBox1.Text = this.resultValue.ToString();
        }

        // 数字键点击事件处理器
        private void NumberButton_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            if (!btn.Text.ToString().Equals("."))
            {
                this.currentValue = this.currentValue * 10 + int.Parse(btn.Text);
            }
            else
            {
                this.currentValue = this.currentValue + int.Parse(btn.Text.ToString());
            }      
            this.DisplayCurrentValue();
        }

        //操作符
        private void OperatorButton_Click(object sender, EventArgs e)
        {
            this.CalculateCore();
            if (sender == buttonAdd)
            {
                this.cachedOperation = Operation.Add;
            }
            if (sender == buttonSub)
            {
                this.cachedOperation = Operation.Sub;
            }
            if (sender == buttonMul)
            {
                this.cachedOperation = Operation.Mul;
            }
            if (sender == buttonDiv)
            {
                this.cachedOperation = Operation.Div;
            }
        }

        //result
        private void buttonResult_Click(object sender, EventArgs e)
        {
            CalculateCore();
        }

        // 运算核心
        private void CalculateCore()
        {
            switch (this.cachedOperation)
            {
                case Operation.Add:
                    this.resultValue += this.currentValue;
                    break;
                case Operation.Sub:
                    this.resultValue -= this.currentValue;
                    break;
                case Operation.Mul:
                    this.resultValue *= this.currentValue;
                    break;
                case Operation.Div:
                    if (this.currentValue != 0)
                    {
                        this.resultValue /= this.currentValue;
                    }
                    else
                    {
                        MessageBox.Show("Zero Error!");
                    }
                    break;
                case Operation.None:
                default:
                    this.resultValue = this.currentValue;
                    break;
            }
            this.currentValue = 0;
            this.DisplayResultValue();
        }

        // 运算类型
        enum Operation
        {
            Add,
            Sub,
            Mul,
            Div,
            None
        }

        private void buttonClear_Click(object sender, EventArgs e)
        {
            this.initializeValues();
            this.DisplayResultValue();
        }
    }
}
程序说明:
1.将0-9数字键名称改为:NumberButton;
2.将+、-、*、/运算符键名称改为:OperatorButton;
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics