最终效果图为: 页面部分代码(包括样式) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCalc1.aspx.cs" Inherits="_MyCalc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>我计算器</title> <mce:style type="text/css"><!-- body{font:14px;text-align:center;} table,tr,td{padding:1px;border-collapse:collapse;} table{border:1px solid #aaa;background:#ddd;width:150px;} .btnCss{width:32px;font:16px bold; vertical-align:middle;} .btnRed{color:#f00;} .btnClear{width:65px;font:16px bold;} .tdRight{text-align:right;} .txtResult{width:160px;} #title{font-size:18px;font-weight:bold;color:red;margin-bottom:8px;} #copy{font-size:12px;color:Blue;margin-top:8px;} --></mce:style><style type="text/css" mce_bogus="1"> body{font:14px;text-align:center;} table,tr,td{padding:1px;border-collapse:collapse;} table{border:1px solid #aaa;background:#ddd;width:150px;} .btnCss{width:32px;font:16px bold; vertical-align:middle;} .btnRed{color:#f00;} .btnClear{width:65px;font:16px bold;} .tdRight{text-align:right;} .txtResult{width:160px;} #title{font-size:18px;font-weight:bold;color:red;margin-bottom:8px;} #copy{font-size:12px;color:Blue;margin-top:8px;} </style> </head> <body> <form id="form1" runat="server"> <div id="pageContent"> <div id="title">我的简易计算器</div> <div id="calcBody" style="vertical-align:middle;" mce_style="vertical-align:middle;"> <table> <tr> <td colspan="5"> <asp:TextBox ID="txtResult" runat="server" ReadOnly="true" CssClass="txtResult"></asp:TextBox> </td> </tr> <tr> <td colspan="5" class="tdRight"> <asp:Button ID="btnClear" runat="server" Text="C" CssClass="btnClear" OnClick="btnClear_Click"/> </td> </tr> <tr> <td> <asp:Button ID="btnNum0" runat="server" Text="0" CssClass="btnCss" OnClick="btnNum0_Click" /> </td> <!--此处省略其它四个数字--> </tr> <tr> <td> <asp:Button ID="btnNum5" runat="server" Text="5" CssClass="btnCss" OnClick="btnNum5_Click"/> </td> <!--此处省略其它四个数字--> </tr> <tr> <td> <asp:Button ID="btnOperatorAdd" runat="server" Text="+" CssClass="btnCss btnRed" OnClick="btnOperatorAdd_Click"/> </td> <td> <asp:Button ID="btnOperatorMinus" runat="server" Text="-" CssClass="btnCss btnRed" OnClick="btnOperatorMinus_Click" /> </td> <td> <asp:Button ID="btnOperatorMultiply" runat="server" Text="*" CssClass="btnCss btnRed" OnClick="btnOperatorMultiply_Click"/> </td> <td> <asp:Button ID="btnOperatorDivide" runat="server" Text="/" CssClass="btnCss btnRed" OnClick="btnOperatorDivide_Click"/> </td> <td> <asp:Button ID="btnResult" runat="server" Text="=" CssClass="btnCss btnRed" OnClick="btnResult_Click"/> </td> </tr> </table> </div> <div id="copy">版权所有 | 作者:吴四林©2009</div> </div> </form> </body> </html> 后置代码为: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _MyCalc1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) //首次加载,初始化参数 { InitSession(); } } /// <summary> /// 0 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum0_Click(object sender, EventArgs e) { DoNum("0"); } /// <summary> /// 1 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum1_Click(object sender, EventArgs e) { DoNum("1"); } /// <summary> /// 2 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum2_Click(object sender, EventArgs e) { DoNum("2"); } /// <summary> /// 3 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum3_Click(object sender, EventArgs e) { DoNum("3"); } /// <summary> /// 4 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum4_Click(object sender, EventArgs e) { DoNum("4"); } /// <summary> /// 5 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum5_Click(object sender, EventArgs e) { DoNum("5"); } /// <summary> /// 6 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum6_Click(object sender, EventArgs e) { DoNum("6"); } /// <summary> /// 7 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum7_Click(object sender, EventArgs e) { DoNum("7"); } /// <summary> /// 8 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNu8_Click(object sender, EventArgs e) { DoNum("8"); } /// <summary> /// 9 操作数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnNum9_Click(object sender, EventArgs e) { DoNum("9"); } /// <summary> /// + 操作符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOperatorAdd_Click(object sender, EventArgs e) { DoOperate("+"); } /// <summary> /// - 操作符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOperatorMinus_Click(object sender, EventArgs e) { DoOperate("-"); } /// <summary> /// * 操作符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOperatorMultiply_Click(object sender, EventArgs e) { DoOperate("*"); } /// <summary> /// / 操作符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOperatorDivide_Click(object sender, EventArgs e) { DoOperate("/"); } /// <summary> /// = 操作符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnResult_Click(object sender, EventArgs e) { //判断用户是否是按下数字键之后再按 "=" 键的,如果是这样要进行计算 if (!Convert.ToBoolean(Session["repeat"])) { //用户直接单击结果(当前操作符和临时变量均为null) if (Session["op"] == null || Session["temp1"] == null) return; //将当前文本框内容赋值给Session["temp2"] if (txtResult.Text.Trim() != "") Session["temp2"] = this.txtResult.Text.Trim(); //计算 RealCalc(); } //将结果显示在文本框中 if(Session["temp1"]!=null) this.txtResult.Text = Session["temp1"].ToString(); //清空临时变量 Session["temp1"] = null; Session["temp2"] = null; Session["repeat"] = null; } /// <summary> /// 清空 操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnClear_Click(object sender, EventArgs e) { //初始化 InitSession(); } /// <summary> /// 用户按下数字按钮 /// </summary> /// <param name="num"></param> public void DoNum(String num) { //将文本框值保存到temp2中 //判断第二个临时变量是否有值,无值,直接取文本框的值,有值,则累加 if (Session["temp2"] != null) { Session["temp2"] = this.txtResult.Text.Trim(); this.txtResult.Text = Session["temp2"].ToString() + num; } else { Session["temp2"] = this.txtResult.Text.Trim(); this.txtResult.Text = num; } //设置变量值 (用户是否连续按下操作符按钮) -- 设置为false ,指当前按下的是文本框 Session["repeat"] = false; } /// <summary> /// 用户按下操作符按钮 /// </summary> public void DoOperate(String op) { //如果用户没有按下数字键,直接按操作符就返回,不做任何动作 if (Session["repeat"] == null) return; Boolean isOp = Convert.ToBoolean(Session["repeat"]); //判断是否连续按下操作符按钮 if (!isOp) { //如果当前文本框值为空的话,直接返回,不做任何操作 if (this.txtResult.Text.Trim() == "") return; //判断操作符是否为空 if (Session["op"] != null) { //临时变量temp1不为空时就为temp2赋值,否则为temp1赋值 if (Session["temp1"] == null) Session["temp1"] = this.txtResult.Text.Trim(); else { Session["temp2"] = this.txtResult.Text.Trim(); RealCalc(); } } else { Session["temp1"] = this.txtResult.Text.Trim(); } } //设置标记按下过操作符的变量 (按下操作符键设置为true,按下数字键设置为false) Session["repeat"] = true; //清空Session["temp2"] Session["temp2"] = null; //设置当前操作符 Session["op"] = op; } /// <summary> /// 根据传入的两个整数计算结果 /// 操作符为当前操作符 /// </summary> /// <param name="firstNum"></param> /// <param name="secondNum"></param> public void RealCalc() { //1、获取操作符 String op = Convert.ToString(Session["op"].ToString()); //2、获取临时变量值 double temp1 = 0.0; double temp2 = 0.0; try { if (Session["temp1"] != null) temp1 = Convert.ToDouble(Session["temp1"].ToString()); if (Session["temp2"] != null) temp2 = Convert.ToDouble(Session["temp2"].ToString()); } catch (Exception) { Response.Write("数字格式错误!"); } //执行计算 switch (op) { case "+": Session["temp1"] = temp1 + temp2; break; case "-": Session["temp1"] = temp1 - temp2; break; case "*": Session["temp1"] = temp1 * temp2; break; case "/": if (temp2 == 0) { Response.Write("不能被0除"); } else { Session["temp1"] = temp1 / temp2; } break; default: Session["temp1"] = "0"; break; } } /// <summary> /// 初始当前会话 /// </summary> public void InitSession() { Session.Clear(); this.txtResult.Text = ""; } }