// 操作完毕 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; }
// 删除字符 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])解决问题"); } }
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); }
// 添加操作符 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; }