C# WinForms手机号输入框11位长度验证问题(VS2022)
解决C# WinForms手机号11位长度验证问题
原代码的核心问题
- 空值判断误用了赋值运算符
=,应该用比较运算符==,否则会引发编译错误或逻辑异常 - 手机号长度验证的写法错误,需要针对输入框
Text属性的Length属性做判断
修正后的验证代码
if (string.IsNullOrEmpty(cmbxTitle.Text) || string.IsNullOrEmpty(txtForename.Text) || string.IsNullOrEmpty(txtSurname.Text) || string.IsNullOrEmpty(txtContactNo.Text) || txtContactNo.Text.Length != 11) { MessageBox.Show("请填写完整信息,且手机号必须为11位"); }
额外优化建议
如果需要确保手机号为纯数字(符合国内手机号规则),可以追加数字有效性验证:
// 先校验必填项和长度,再验证是否为纯数字 if (string.IsNullOrEmpty(cmbxTitle.Text) || string.IsNullOrEmpty(txtForename.Text) || string.IsNullOrEmpty(txtSurname.Text) || string.IsNullOrEmpty(txtContactNo.Text) || txtContactNo.Text.Length != 11 || !long.TryParse(txtContactNo.Text, out _)) { MessageBox.Show("请填写完整信息,且手机号必须为11位纯数字"); }
关键说明
string.IsNullOrEmpty是C#中判断字符串为空或null的标准方法,比直接和""比较更严谨txtContactNo.Text.Length != 11直接验证输入字符串长度是否不等于11,满足严格11位的要求long.TryParse用于校验输入是否为有效数字,避免用户输入非数字字符
内容的提问来源于stack exchange,提问作者Jack___
相关产品推荐
相关产品推荐

