如何防止int类型文本框为空?表单验证问题求助
表单验证问题修正方案
你的代码存在两个核心问题:
- 直接用
Convert.ToInt32(tbxAge.Text)会在年龄框为空或输入非数字时抛出异常,导致程序崩溃 - 年龄验证的逻辑判断写反了,当前条件会在年龄框不为空时提示错误,完全不符合需求
以下是修正后的完整代码:
string firstName = tbxName.Text.Trim(); string lastName = tbxFamily.Text.Trim(); int age; // 验证名字非空 if (string.IsNullOrEmpty(firstName)) { MessageBox.Show("لطفا نام کاربری خود را وارد کنید"); return; } // 验证姓氏非空 if (string.IsNullOrEmpty(lastName)) { MessageBox.Show("لطفا نام خانوادگی خود را وارد کنید"); return; } // 验证年龄:先检查是否为空,再检查是否为有效整数 if (string.IsNullOrEmpty(tbxAge.Text.Trim())) { MessageBox.Show("لطفا سن خود را وارد کنید"); } else if (!int.TryParse(tbxAge.Text.Trim(), out age)) { MessageBox.Show("لطفا سن را به صورت عدد صحیح وارد کنید"); } else { MessageBox.Show($" نام کاربری {firstName} نام خانوادگی {lastName} با سن {age} با موفقیت ثبت شد "); }
关键说明:
- 使用
Trim()去除输入前后的空格,避免用户输入空白字符被误判为有效内容 - 用
int.TryParse替代Convert.ToInt32,它会安全尝试转换输入,成功则返回true并将结果存入age变量,失败则返回false,不会抛出异常 - 调整验证顺序:先确保名字和姓氏非空,再单独处理年龄的空值和格式错误,逻辑更清晰
- 使用字符串插值
$""替代字符串拼接,代码更简洁易读
内容的提问来源于stack exchange,提问作者Arash
相关产品推荐
相关产品推荐

