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

C# WinForm累计用电量统计文本框实现问题求助

C# WinForms电费账单应用累计用电量统计修复方案

问题根源

当前代码中txtTtlPwr.Text = txtPwrUse.Text.ToString();仅将当前客户的用电量直接赋值给总用电量文本框,未实现累加逻辑,导致每次新增客户都会覆盖之前的累计值。

解决方案

  1. 新增类级别的变量存储累计用电量,和BillTotal保持相同作用域
  2. 每次新增客户时,将当前客户的用电量累加到该变量
  3. 用累计变量更新「Total Power Used」文本框

修改后的完整代码

public partial class ElectricBill : Form
{
    List<Customers> customers = new List<Customers>();
    decimal BillTotal = 0;
    // 新增累计用电量变量,用于持久化存储所有客户的用电量总和
    decimal totalPowerUsed = 0;

    public ElectricBill()
    {
        InitializeComponent();
    }

    private void btnAddData_Click(object sender, EventArgs e)
    {
        string FirstName;
        string LastName;
        decimal AcctNo, PwrUse;
        Customers Bill;
        if (Validator.IsProvided(txtFname) &&
            Validator.IsProvided(txtLname) &&
            Validator.IsNonNegativeDecimal(txtAcctNo) &&
            Validator.IsNonNegativeDecimal(txtPwrUse)
            )
        {
            FirstName = txtFname.Text;
            LastName = txtLname.Text;
            AcctNo = Convert.ToDecimal(txtAcctNo.Text);
            PwrUse = Convert.ToDecimal(txtPwrUse.Text);
            Bill = new Customers(FirstName, LastName, (int)AcctNo, PwrUse);
        }
        else
        {
            return;
        }

        customers.Add(Bill);
        lstCustomerData.Items.Add(Bill);
        BillTotal += Bill.CalculateBill();
        txtBillTotal.Text = BillTotal.ToString("c");
        
        // 累加当前客户用电量到总变量
        totalPowerUsed += Bill.PwrUse;
        // 更新总用电量文本框
        txtTtlPwr.Text = totalPowerUsed.ToString();

        ResetEntry();
    }

    private void ResetEntry()
    {
        txtFname.Clear();
        txtLname.Clear();
        txtAcctNo.Clear();
        txtPwrUse.Clear();
        txtFname.Focus();
    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        txtFname.Clear();
        txtLname.Clear();
        txtAcctNo.Clear();
        txtPwrUse.Clear();
    }
}

补充说明

确保Customers类包含可读取的PwrUse属性(构造函数已传入该值,需对应公共属性),若未定义,需在Customers类中添加:

public class Customers
{
    public decimal PwrUse { get; private set; }

    public Customers(string firstName, string lastName, int acctNo, decimal pwrUse)
    {
        // 其他属性初始化逻辑
        PwrUse = pwrUse;
    }

    // 已有的CalculateBill方法
    public decimal CalculateBill()
    {
        // 原有计费逻辑
    }
}

若需要重置总用电量(如新增全局重置按钮),只需执行totalPowerUsed = 0; txtTtlPwr.Text = "0";即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:15:34