コード例 #1
0
        // 操作完毕
        public void endOne(object sender)
        {
            // 将操作数交给计算模块
            try
            {
                c.Db1 = Convert.ToDouble(db1Temp);
                c.Ope = opeTemp;
                c.Db2 = Convert.ToDouble(db2Temp);
            }
            catch (System.FormatException)  // 输入 2.3.5 * 6 = ? 报错
            {
                MessageBox.Show("请按照正确的格式输入行不???");
                System.Diagnostics.Process.Start("WindowsApplication.exe"); // 启动你的程序;
                Application.Exit();                                         //退出当前的程序
            }

            // 将结果显示在计算器屏幕上
            tbshow.PushChar("=");//(((Button)(sender)).Text);
            tbshow.AppendLine(Convert.ToString(c.Res));

            // 恢复初始化值
            db1Temp = null;
            db2Temp = null;
            opeTemp = compute.Operator.Null;
            status  = enumStatus.db1;
        }
コード例 #2
0
        // 删除字符
        public void delOneChar()
        {
            // status == db1 && db1Temp == null 此时用户什么都没输入
            // status == db1 && db1Temp != null 此时用户输入第一个操作数未完成
            // status == db2 && db2Temp == null 此时用户输入了左操作数和一个操作符
            // status == db2 && db2Temp != null 此时用户输入了左操作数, 操作符, 并且输入右操作数未完成

            if (enumStatus.db1 == status && null == db1Temp)
            {
                MessageBox.Show("没有可以删除的数据了 囧rz");
            }
            else if (enumStatus.db1 == status && null != db1Temp)
            {
                tbshow.PopChar();
                string temp = db1Temp;
                db1Temp = temp.Remove(temp.Length - 1, 1);
                if (db1Temp.Length == 0)
                {
                    db1Temp = null;
                }
            }
            else if (enumStatus.db2 == status && null == db2Temp)
            {
                if (opeTemp == compute.Operator.OpeSin ||
                    opeTemp == compute.Operator.OpeCos ||
                    opeTemp == compute.Operator.OpeTan)
                {
                    tbshow.PopChar();
                    tbshow.PopChar();
                    tbshow.PopChar();
                }
                else
                {
                    tbshow.PopChar();
                }
                // 删除一个正好把操作符删除了
                status  = enumStatus.db1;
                opeTemp = compute.Operator.Null;
            }
            else if (enumStatus.db2 == status && null != db2Temp)
            {
                string temp = db2Temp;
                db2Temp = temp.Remove(temp.Length - 1, 1);
                tbshow.PopChar();
                if (db2Temp.Length == 0)
                {
                    db2Temp = null;
                }
            }
            else
            {
                MessageBox.Show("class _01HeabCalculatorIO => " +
                                "public void delOneChar() 中出现了异常, 请联系大雄([email protected])解决问题");
            }
        }
コード例 #3
0
        public _01HeabCalculatorIO(ref TextBox txtBoxShow)
        {
            db1Temp = null;
            db2Temp = null;
            opeTemp = compute.Operator.Null;
            status  = enumStatus.db1;

            // 显示模块 控制器 开始接管显示器
            tbshow = new TxtBoxShow(ref txtBoxShow);
            // 初始显示一个0
            Button b = new Button();

            b.Text = "0";
            addFactor(b);
        }
コード例 #4
0
        // 添加操作符
        public void addOpe(object sender)
        {
            if (db1Temp == null)    // 如果没有输入左操作数就开始计算说明要以计算结果作为左操作数
            {
                db1Temp = Convert.ToString(c.Res);
            }

            if (opeTemp != compute.Operator.Null)   // 不允许 6 + 7 - 3 这种输入多个操作符的输入形式
            {
                Console.Beep(500, 500);
                return;
            }

            switch (((Button)(sender)).Text)
            {
            case "+":
                opeTemp = compute.Operator.add;
                break;

            case "-":
                opeTemp = compute.Operator.minus;
                break;

            case "×":
                opeTemp = compute.Operator.multiply;
                break;

            case "÷":
                opeTemp = compute.Operator.divide;
                break;

            case "Sin":
                deleteDb1Temp();
                opeTemp = compute.Operator.OpeSin;
                break;

            case "Cos":
                deleteDb1Temp();
                opeTemp = compute.Operator.OpeCos;
                break;

            case "Tan":
                deleteDb1Temp();
                opeTemp = compute.Operator.OpeTan;
                break;

            case "x²":
                opeTemp = compute.Operator.OpePingFang;
                tbshow.PushChar("²");
                endOne(null);
                return;

            case "√":
                opeTemp = compute.Operator.OpeKaiFang;
                tbshow.PushChar("√");
                endOne(null);
                return;

            case "X^Y":
                tbshow.PushChar("^");
                status  = enumStatus.db2;
                opeTemp = compute.Operator.OpePow;
                return;

            default:
                break;
            }
            tbshow.PushChar(((Button)(sender)).Text);
            status = enumStatus.db2;
        }