WPF应用开发问题:多行数值输入处理后仅输出最后结果
问题原因
你的代码每次循环都直接将计算结果赋值给outputBox.Text,这会覆盖上一次循环的内容,最终只显示最后一个数值的计算结果。
解决方法
可以用StringBuilder拼接所有计算结果,最后一次性赋值给outputBox.Text,同时保留换行格式。另外建议用Environment.NewLine分割输入文本(适配不同系统换行符),并对分割后的字符串做Trim处理,避免空格影响解析:
private void mathClick(object sender, RoutedEventArgs e) { var resultBuilder = new StringBuilder(); // 适配不同系统换行,同时忽略空行 foreach (var numStr in inputBox.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { var trimmedNum = numStr.Trim(); if (double.TryParse(trimmedNum, out double value)) { resultBuilder.AppendLine(Convert.ToString(value * 2)); } } // 去除最后多余的换行符 outputBox.Text = resultBuilder.ToString().TrimEnd(); }
额外优化说明
StringSplitOptions.RemoveEmptyEntries可以跳过输入中的空行,避免无效解析操作- 对分割后的字符串做
Trim(),能处理输入时不小心加入的前后空格,防止解析失败 - 使用
StringBuilder比直接用+=拼接字符串更高效,尤其在输入数值较多时
内容的提问来源于stack exchange,提问作者Dylan Townes
相关产品推荐
相关产品推荐

