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

时间:2018-11-21 12:29:38

标签: c# winforms c#-4.0

目标是仅显示已创建的每个银行帐户的最新更新。我不知道如何执行此操作,并尝试使用clear方法,但这不起作用。当前,每次我单击报告按钮时,我每次添加一个支票或储蓄帐户,如果我进行了提现或存款,它将多次显示该帐户。我的目标是仅显示每个存在的帐户,而当前余额不会多次显示该帐户,因为我进行了多次交易。从下面的屏幕快照中可以看到,我创建了一个初始余额为$ 300的Checking帐户#1。然后,我进行另一笔交易,向支票帐户添加1000美元,并创建一个初始余额为300美元的储蓄帐户。当我再次单击“报告”时,它应仅显示余额为1300美元的支票帐户和余额为300美元的储蓄帐户。相反,它显示具有新交易的先前交易。

enter image description here

enter image description here

enter image description here

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

    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方法单击中调用的方法。此方法在储蓄和支票类中。

            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;
        }

1 个答案:

答案 0 :(得分:1)

似乎您在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();
}