我如何只显示最新的交易而不是以前的交易 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();
}
目标是仅显示已创建的每个银行帐户的最新更新。我不确定如何执行此操作,并尝试使用 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();
}