银行应用程序 - 在c#中从一个类调用一个窗口表单

时间:2014-07-16 20:47:16

标签: c# winforms class

我在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
    }

2 个答案:

答案 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和帐户逻辑的看法。