我在c#中学习Windows窗体,发现很难理解使用表单和类。我正在创建一个银行应用程序,并希望用户能够: 按下按钮,查看当前的余额, 如果他们没有足够的资金并且余额需要更新,请输入他们的帐户借记(拿出钱),获得成功通知或警告说明。
我不明白如何将帐户类连接到表单和指定的标签和按钮。我在过去的几个小时里一直在尝试不同的事情但是无处可去。有人可以解释我如何在标签框中显示按下按钮时余额为500。此外,我如何通过在文本框中输入金额并按下按钮来借记帐户。并且要在确认借记的标签上写下注释。我有足够的资金'在我班上的消息,但理想情况下我希望在表格中有这样的信息,因为我听说过这种方式更好的做法。
我希望我已经足够清楚,但会确认一切!我已经在这里请求了很多帮助,因为我是Windows窗体的新手,但是任何帮助或指导都将不胜感激!
class AccountClass
{
private decimal balance = 500;
public AccountClass(decimal myBalance)
{
Balance = myBalance;
}
public virtual bool Debit(decimal amount)
{
if (amount > Balance)
{
Console.WriteLine("There is not enough money in your account");
return false;
}
else
{
Balance = Balance - amount;
return true;
}
}
形式:
//button to see balance
private void btnAccountSeeBalance_Click(object sender, EventArgs e)
{
//label balance should print to
lblAccountBalance.Text = myBalance.ToString();
}
//button to debit account
private void btnAccountDebit_Click(object sender, EventArgs e)
{
//text box to enter amount to debit
txtAccountDebitAmount
//label to print confirm/insufficient funds to
lblAccountDebitSuccess
}
答案 0 :(得分:1)
您的Account
课程不应该直接在表单中调用任何内容。让您的Account类生成事件或使用函数的返回值。您的Windows窗体应该在Account类中创建和调用函数,然后在视图中处理响应。 Account类不应该有关于视图/表单的线索。
简单实施您点击的活动:
private void btnAccountDebit_Click(object sender, EventArgs e)
{
var ac = new AccountClass( balance);
var rtn = ac.Debit( amount);
}
答案 1 :(得分:1)
这应该可以帮助您入门。您希望将所有帐户逻辑保留在Account类的内部,以及表单和UI中的任何消息或用户界面逻辑,而不是在Account类中。
public partial class Form1 : Form
{
private AccountClass account;
public Form1()
{
InitializeComponent();
account = new AccountClass(500);
}
public class AccountClass
{
public Decimal Balance
{
get;
private set;
}
public AccountClass(decimal initialBalance)
{
Balance = initialBalance;
}
public void Debit(decimal amount)
{
if (amount > Balance)
throw new InsufficientFundsException();
Balance -= amount;
}
}
public class InsufficientFundsException : Exception { }
private void btnGetBalance_Click(object sender, EventArgs e)
{
txtBalance.Text = account.Balance.ToString();
}
private void btnDebit_Click(object sender, EventArgs e)
{
Decimal debitAmount;
try
{
debitAmount = Decimal.Parse(txtAmount.Text);
}
catch (Exception)
{
MessageBox.Show("Amount is not valid");
return;
}
try
{
account.Debit(debitAmount);
MessageBox.Show(debitAmount + " has been debited from your account");
}
catch (InsufficientFundsException)
{
MessageBox.Show("There were insufficient funds. Your current account balance is " + account.Balance);
}
}
}
我所做的就是创建一个Form并在其上拖动2个TextBoxes和Buttons。如果您将它们命名为txtBalance和txtAmount,以及btnGetBalance和btnDebit并将它们连接到click事件,那么您可以使用此代码。
编辑:
为了简洁起见,我将所有代码放在Form类中。但显然那些额外的类应该是单独的代码文件。考虑我对分离UI和帐户逻辑的看法。