我如何只显示最新的交易而不是以前的交易 C# WinForm

How do I only show the latest transaction instead of previous transactions C# WinForm

目标是仅显示已创建的每个银行帐户的最新更新。我不确定如何执行此操作,并尝试使用 clear 方法,但这不起作用。目前,每次我点击报告按钮添加支票或储蓄账户时,如果我进行了提款或存款,它会多次显示该账户。我的目标是只显示每个存在的帐户,并且当前余额不会多次显示该帐户,因为我进行了多次交易。正如您从下面的屏幕截图中看到的那样,我创建了一个起始余额为 300 美元的支票账户#1。然后我进行另一笔交易,向支票账户添加 1000 美元,并创建一个起始余额为 300 美元的储蓄账户。当我再次点击报告时,它应该只显示余额为 1300 美元的支票账户和余额为 300 美元的储蓄账户。相反,它显示以前的交易和新交易。

这是将数据发送到报表的代码。

    private void reportButton4_Click(object sender, EventArgs e)
    {
        foreach (Account account in accounts)
        {
            List<Transaction> transactions = 
            account.GetAccountTransaction();

            allTransactions.AddRange(transactions);
        }

        string reportString = accounts.ToString();

        AccountReportForm destinyForm = new AccountReportForm();
        destinyForm.ExternalData = allTransactions;
        destinyForm.Show();
    }

这是报表中将显示结果的代码。

    public partial class AccountReportForm : Form
{
    public List<Transaction> ExternalData { get; set; }
    public AccountReportForm()
    {
        InitializeComponent();
    }

    private void AccountReportForm_Load(object sender, EventArgs e)
    {
        dataLabel2.Text = "";
        foreach (Transaction endMonth in ExternalData)
        {
            dataLabel2.Text += endMonth.Transactions + "\n";

        }
    }

如果需要,这是在 reportbutton 方法单击中调用的方法。这个方法在储蓄和检查class.

            public override List<Transaction> GetAccountTransaction()
        {
            var transactions = new List<Transaction>();
            var endString = new Transaction();

            string reportString = ("Checking account: " + 
         AccountID.ToString() + " has a balance of $" + Balance.ToString());
            endString.Transactions = reportString;
            transactions.Add(endString);

            return transactions;
        }

您在 reportButton4_Click 中似乎使用了一个名为 allTransactions 的变量,该变量未在该方法中定义。由于您在该列表上调用 .AddRange(),因此每次单击该按钮时,它会将帐户中的交易附加到当前列表。如果您从不重置列表,它将继续增长。先尝试重置列表:

private void reportButton4_Click(object sender, EventArgs e)
{
    allTransactions = new List<Transaction>();

    foreach (Account account in accounts)
    {
        List<Transaction> transactions = 
        account.GetAccountTransaction();

        allTransactions.AddRange(transactions);
    }

    string reportString = accounts.ToString();

    AccountReportForm destinyForm = new AccountReportForm();
    destinyForm.ExternalData = allTransactions;
    destinyForm.Show();
}