Как мне показать только последнюю транзакцию вместо предыдущих транзакций C # WinForm - PullRequest
0 голосов
/ 21 ноября 2018

Цель состоит в том, чтобы показывать только последние обновления для каждого созданного банковского счета.Я не уверен, как это сделать, и пытался использовать метод clear, но это не работает.В настоящее время каждый раз, когда я добавляю чековый или сберегательный счет, когда я нажимаю кнопку отчета, он будет отображать счет несколько раз, если я снял деньги или внес депозит.Моя цель - показать только каждую существующую учетную запись, а текущий баланс не будет отображаться несколько раз, потому что я сделал несколько транзакций.Как видно из скриншотов ниже, я создаю Контрольный счет № 1 со стартовым балансом 300 долларов.Затем я делаю еще одну транзакцию, добавляя 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 голосов
/ 21 ноября 2018

Похоже, что в 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...