C# 双TextBox空输入校验抛出异常,如何实现简便的空值错误提示逻辑
核心问题原因
- 你的代码在执行任何空值校验、范围校验之前,就直接对文本框内容做了
int.Parse()强制类型转换,只要文本框为空、或者输入不是合法整数,这行代码会直接抛出格式异常,根本执行不到后续的判断逻辑。 - 定义的
number 1、number 2、answer 3变量名带有空格,不符合C#语法规则,无法正常编译运行。 - 直接拿文本框的字符串属性和数字0做等值判断逻辑不成立:文本框的
Text属性是字符串类型,空字符串和数字0没有等值关系,这类判断永远不会触发。
最简实现方式
直接调整校验逻辑顺序,搭配C#内置的int.TryParse做安全类型转换,不需要写冗余的重复判断就能自动兼容空输入、非法格式输入的场景,从根源上避免转换异常:
// 修正变量命名,符合C#语法要求 public int number1; public int number2; public int answer3; private void Add_Click(object sender, RoutedEventArgs e) { // 优先匹配“两个输入框均为空”的独立提示需求,在类型转换前判断 if (string.IsNullOrEmpty(TextBox1.Text) && string.IsNullOrEmpty(TextBox2.Text)) { MessageBox.Show("两个输入框均为空,请输入内容后再计算"); return; } // 安全转换:转换失败时返回false,不会抛出异常 bool isInput1Legal = int.TryParse(TextBox1.Text, out number1); bool isInput2Legal = int.TryParse(TextBox2.Text, out number2); // 覆盖其他非法场景:单个输入框为空、输入内容不是数字 if (!isInput1Legal || !isInput2Legal) { MessageBox.Show("请在两个输入框中输入合法的整数"); TextBox1.Clear(); TextBox2.Clear(); return; } // 原有数值范围校验逻辑 if (number1 < 1 || number1 > 100 || number2 < 1 || number2 > 100) { MessageBox.Show("INVALID INPUT"); TextBox1.Clear(); TextBox2.Clear(); return; } // 校验通过后执行加法计算 answer3 = number1 + number2; answerText.Text = answer3.ToString(); }
实现优势
- 逻辑顺序调整后,会先做空值判断,再做类型转换,完全不会出现“没判断空就先因为类型转换抛异常”的问题。
int.TryParse会自动兼容空字符串、非数字字符的转换场景,不需要手动写大量的字符串校验分支。- 完全覆盖你原本提出的“两个输入框均为空时弹出错误提示”的需求,同时兼容其他非法输入的校验逻辑。
内容的提问来源于stack exchange,提问作者Lightflame Productions
相关产品推荐
相关产品推荐

