文本过滤器FilteredTextBox使用范例一(简易计算器)

<form id="form1" runat="server">

    <ajaxToolkit:ToolkitScriptManager ID="tksm" runat="server"

        OnAsyncPostBackError="tksm_AsyncPostBackError" />

 

    <div align="center">

        <asp:Panel ID="Panel1" runat="server" GroupingText="简易计算机" Width="750">

            <table border="0" style="margin: 5px; padding: 5px">

                <tr align="center">

                    <td>

                        第一个数字

                    </td>

                    <td>

                        运算符号</td>

                    <td>

                        第二个数字

                    </td>

                    <td width="80">

                    </td>

                    <td width="120">

                        运算结果

                    </td>

                </tr>

                <tr align="center" vAlign="top">

                    <td>

                        <asp:TextBox ID="txtNum1" runat="server" Width="60px" />

                    </td>

                    <td>

                        <asp:TextBox ID="txtOperator" runat="server" Width="30px" MaxLength="1" />

                        <br />

                        (+、-、*、/)

                    </td>

                    <td>

                        <asp:TextBox ID="txtNum2" runat="server" Width="60px" />

                    </td>

                    <td>

                        <asp:Button ID="btnCaculate" runat="server" Text="计算" OnClick="btnCaculate_Click" />

                    </td>

                    <td>

                        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

                            <ContentTemplate>

                                <asp:Label ID="lblResult" runat="server" />

                            </ContentTemplate>

                            <Triggers>

                                <asp:AsyncPostBackTrigger ControlID="btnCaculate" EventName="Click" />

                            </Triggers>

                        </asp:UpdatePanel>

                    </td>

                </tr>

            </table>

        </asp:Panel>

    </div>

    <%-- 文本框过滤器:第 1 个运算元 --%>

    <ajaxToolkit:FilteredTextBoxExtender ID="FTBX1" runat="server"

        TargetControlID="txtNum1"

        FilterType="Numbers, Custom"

        ValidChars=".-" /> <%--只能是数字 可以是小数和负数 FilterType为Custom,ValidChars才有效--%>

       

        

    <%-- 文本框过滤器:运算符号 --%>

    <ajaxToolkit:FilteredTextBoxExtender ID="FTBX2" runat="server"

        TargetControlID="txtOperator"

        FilterType="Custom"

        ValidChars="+-*/" /> <%--只能是+ -  * /--%>

       

       

    <%-- 文本框过滤器:第 2 个运算元 --%>

    <ajaxToolkit:FilteredTextBoxExtender ID="FTBX3" runat="server"

        TargetControlID="txtNum2"

        FilterType="Numbers, Custom"

        ValidChars=".-" />

 

    <script type="text/javascript">

    // 在 PageRequestManager 的 endRequest 事件中,通知用户发生错误。

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(EndRequest);

 

    function EndRequest(sender, args)

    {

        if (args.get_error())

        {

            $get("lblResult").innerHTML = ""; // 清除先前的结果值

            alert(args.get_error().message);

            args.set_errorHandled(true);

        }

    }

    </script>

    </form>




**********************计算按钮*****************************************
protected void btnCaculate_Click(object sender, EventArgs e)
{
Double dblNum1, dblNum2, dblResult;
lblResult.Text = "";
try
{ // 检查是否有输入运算数字,如果评量结果为真,就返回一个自定义的异常。
if ((txtNum1.Text.Trim().Length == 0) ||
(txtNum2.Text.Trim().Length == 0))
throw new Exception("您没有指定运算数字。");
dblNum1 = Convert.ToDouble(txtNum1.Text);
dblNum2 = Convert.ToDouble(txtNum2.Text);
switch (txtOperator.Text)
{
case "+":
dblResult = dblNum1 + dblNum2;
break;
case "-":
dblResult = dblNum1 - dblNum2;
break;
case "*":
dblResult = dblNum1 * dblNum2;
break;
case "/":
// 检查除数是否为零,如果评量结果为真,就返回一个自定义的异常。
if (dblNum2 == 0)
throw new Exception("除数不能为 0。");

dblResult = dblNum1 / dblNum2;
break;
default:
// 返回一个自定义的异常。
throw new Exception("您没有指定运算符号。");
}
lblResult.Text = dblResult.ToString();
}
catch (Exception ex)
{
if ((txtNum1.Text.Trim().Length == 0) || (txtNum2.Text.Trim().Length == 0))
{
ex.Data["ExtraInfo"] = "/n请输入数字。";
throw ex;
}

if (txtOperator.Text.Trim().Length == 0)
{
ex.Data["ExtraInfo"] = "/n请输入运算符号。";
throw ex;
}

if (Convert.ToDouble(txtNum2.Text) == 0)
{
ex.Data["ExtraInfo"] = "/n请输入非 0 的除数。";
throw ex;
}
}
}

protected void tksm_AsyncPostBackError(
object sender, AsyncPostBackErrorEventArgs e)
{
if (e.Exception.Data["ExtraInfo"] != null)
{
tksm.AsyncPostBackErrorMessage =
"/n" + e.Exception.Message +
e.Exception.Data["ExtraInfo"].ToString();
}
else
tksm.AsyncPostBackErrorMessage = "/n发生一个无法预知的错误。";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值