You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中为ATM程序实现文本框空值、特殊字符及字母校验

ATM程序输入验证解决方案

核心验证逻辑

直接利用double.TryParse()方法即可同时完成你需要的两项验证:

  • 自动检测输入是否为空(或仅含空格)
  • 自动排除字母、特殊字符等无效内容,仅接受有效的数字输入

修改后的保存按钮代码

private void btn_save_Click(object sender, EventArgs e)
{
    // 先做输入有效性验证
    string input = txtbox_trans.Text.Trim();
    if (!double.TryParse(input, out double parsedAmount))
    {
        MessageBox.Show("请输入有效的数字金额,禁止输入字母、特殊字符或留空!", "输入无效");
        // 根据当前操作状态重置标志,避免流程异常
        if (withdraw) withdraw = true;
        if (deposit) deposit = true;
        return; // 终止后续流程
    }

    if (withdraw)
    {
        withdraw = false;
        if (balance > parsedAmount)
        {
            if (parsedAmount < 500)
            {
                MessageBox.Show("Minimum withdrawal amount is : 500\nInput a higher amount.", "Amount");
                withdraw = true;
            }
            else
            {
                balance = balance - parsedAmount;
                MessageBox.Show("Your current balance: " + balance.ToString(), "WITHDRAWAL SUCCESSFUL");
                btn_cb.Enabled = false;
                btn_dp.Enabled = false;
                btn_withdraw.Enabled = false;
                btn_cancel.Enabled = false;
                btn_save.Enabled = false;
                btn_new.Enabled = true;
                txtbox_trans.Enabled = false;
                txtbox_trans.Text = "CLICK NEW TRANSACTION";
            }
        }
        else
        {
            MessageBox.Show("Your current balance is not enough!\nPlease enter a lower amount.", "Not enough balance");
            withdraw = true;
        }
    }
    else if (deposit)
    {
        deposit = false;
        if (100 > parsedAmount)
        {
            MessageBox.Show("Minimum deposit amount is : 100\nInput a higher amount.", "Amount");
            deposit = true;
        }
        else if (100000 <= parsedAmount)
        {
            MessageBox.Show("Maximum deposit amount is : 100000\nInput a lower amount.", "Amount");
            deposit = true;
        }
        else
        {
            balance = balance + parsedAmount;
            MessageBox.Show("Your current balance: " + balance.ToString(), "DEPOSIT SUCCESSFUL");
            btn_cb.Enabled = false;
            btn_dp.Enabled = false;
            btn_withdraw.Enabled = false;
            btn_cancel.Enabled = false;
            btn_save.Enabled = false;
            btn_new.Enabled = true;
            txtbox_trans.Enabled = false;
            txtbox_trans.Text = "CLICK NEW TRANSACTION";
        }
    }
}

关键说明

  1. 输入预处理:用Trim()去除输入前后的空格,避免用户仅输入空格被误判为有效输入
  2. 验证优先级:把输入验证放在方法最开头,一旦验证失败直接弹出提示并终止流程,避免后续代码执行异常
  3. 避免重复解析:将解析后的parsedAmount变量复用在后续的金额判断中,替代多次调用double.Parse(),提升代码效率同时避免潜在异常

内容的提问来源于stack exchange,提问作者Tyler Torey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:30:29