You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WPF开发的U-R-I计算器计算结果时对时错如何解决?

问题原因
  • 核心逻辑错误:两个输入框的文本变更事件都读取了同一个名为textbox_test的输入框内容。第二个输入框对应的TestTextbox2_TextChanged事件中,你依然将s_test2赋值为第一个输入框的文本,导致s_test1和s_test2实际存储的都是第一个输入框的输入值:当两个输入值相同时计算结果恰好正确,输入值不同时结果就会出现异常。
  • 潜在风险:用全局字符串变量缓存输入的逻辑存在隐患,如果用户未输入内容就点击计算、或者输入非数字内容,程序会直接抛出转换异常崩溃。
修复方案

推荐直接优化计算逻辑,去掉冗余的全局变量缓存,在计算按钮点击时直接读取两个输入框的实时值,同时增加输入合法性校验,示例代码如下:

using System;
using System.Windows;

namespace URI_CALC
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Calc_GETU_Click(object sender, RoutedEventArgs e)
        {
            // 注意将下方的textbox_test2替换为你第二个输入框实际的Name属性值
            if (double.TryParse(textbox_test.Text, out double r) 
                && double.TryParse(textbox_test2.Text, out double i))
            {
                double u = r * i;
                textblock_u.Text = u.ToString();
            }
            else
            {
                textblock_u.Text = "请输入合法的数字";
            }
        }

        // 可以删除两个TextChanged事件和对应的全局变量,不需要额外缓存输入值
    }
}

如果你要保留原来的TextChanged缓存逻辑,只需要把TestTextbox2_TextChanged事件中的取值对象修改为你第二个输入框的实际Name即可。

内容的提问来源于stack exchange,提问作者Icecreampie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:45:07