如何在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"; } } }
关键说明
- 输入预处理:用
Trim()去除输入前后的空格,避免用户仅输入空格被误判为有效输入 - 验证优先级:把输入验证放在方法最开头,一旦验证失败直接弹出提示并终止流程,避免后续代码执行异常
- 避免重复解析:将解析后的
parsedAmount变量复用在后续的金额判断中,替代多次调用double.Parse(),提升代码效率同时避免潜在异常
内容的提问来源于stack exchange,提问作者Tyler Torey
相关产品推荐
相关产品推荐

