2

このプログラムは、2 つのタブを持つ GUI です。最初のタブには、名前、ID、年齢、口座残高の 4 つのテキストボックスがあります。このタブには、2 番目のタブのコンボボックスにアカウントを追加するボタンもあります。2 番目のタブには、名前、ID、年齢、およびバランス用のコンボボックスと 4 つのテキストボックスがあります。コンボボックスから名前を選択すると、4 つのテキストボックスに情報が自動的に入力されます。私が直面している問題は、ユーザーが金額を入力して、テキストボックスの残高に差し引いたり追加したりできる引き出しボタンと入金ボタンが必要なことです。誰かがすでに私を助けてくれた引き出しボタンのサンプルコードがあります。ボタンを押してもバランスが変わらない理由を誰か教えてください。

class BankAccount
{
    //attributes
    public string accountID;
    public string customerName;
    public int customerAge;
    public double balance;
    public const double DEFAULT_BALANCE = 500.00;

    //construct
    public BankAccount()
    {
    }

    public BankAccount(string anID, string aName, int anAge, double aBalance)
    {
        accountID = anID;
        customerName = aName;
        customerAge = anAge;
        balance = aBalance;
        if (aBalance == 0)
        {
            balance = DEFAULT_BALANCE;
        }
        else
        {
            balance = aBalance;
        }
    }

    public BankAccount(string anID, string aName, int anAge)
    {
        accountID = anID;
        customerName = aName;
        customerAge = anAge;
        balance = DEFAULT_BALANCE;
    }






    //accessors
    public void SetID(string anID)
    {
        accountID = anID;
    }

    public void SetName(string aName)
    {
        customerName = aName;
    }

    public void SetAge(int anAge)
    {
        customerAge = anAge;
    }

    public void SetBalance(double aBalance)
    {
        balance = aBalance;
    }

    public string GetID()
    {
        return accountID;
    }

    public string GetName()
    {
        return customerName;
    }

    public int GetAge()
    {
        return customerAge;
    }

    public double GetBalance()
    {
        return balance;
    }


}

}

ここにフォームがあります

 public partial class Form1 : Form
 {

    private List<BankAccount> account = new List<BankAccount>();

    public Form1()
    {
        InitializeComponent();
    }



    private void btnAddAccount_Click(object sender, EventArgs e)
    {
        BankAccount aBankAccount = new BankAccount(txtAccountID.Text, txtName.Text,
            int.Parse(txtAge.Text), double.Parse(txtBalance.Text));

        account.Add(aBankAccount);
        AddToComboBox();
        ClearText();


    }

    private void AddToComboBox()
    {
        cboAccount.Items.Clear();
        foreach (BankAccount person in account)
        {

            cboAccount.Items.Add(person.GetName());


        }


    }
    private void ClearText()
    {
        txtName.Clear();
        txtAccountID.Clear();
        txtBalance.Clear();
        txtAge.Clear();
        txtAccountID.Focus();


    }

    private void cboAccount_SelectedIndexChanged(object sender, EventArgs e)
    {
        txtNameTab2.Text = account[cboAccount.SelectedIndex].customerName;
        txtAgeTab2.Text = account[cboAccount.SelectedIndex].customerAge.ToString();
        txtAccountIDTab2.Text = account[cboAccount.SelectedIndex].accountID.ToString();
        txtBalanceTab2.Text = account[cboAccount.SelectedIndex].balance.ToString();
    }



    private void btnWithdraw_Click(object sender, EventArgs e)
    {

        double amount = 0;

        if (double.TryParse(txtWithdraw.Text, out amount))
        {
            if (amount > 0)
            {
                BankAccount currentAccount = account[cboAccount.SelectedIndex];
                double currentBalance = currentAccount.GetBalance();
                double amountLeft = currentBalance - amount;

                if (amountLeft >= 0)
                {
                    currentAccount.SetBalance(amountLeft);
                    txtBalanceTab2.Text = amountLeft.ToString("c");
                }
                else
                {
                    MessageBox.Show("You don't have enough money!");
                }



            }

        }
    }


}
}
4

2 に答える 2

2

「ボタンを押してもバランスが変わらない理由を誰か教えてくれませんか?」

クリックを処理するためにコード化されたイベントがあるため、撤回ボタンが機能します。

private void btnWithdraw_Click(object sender, EventArgs e)

残高ボタンにそのようなイベントはありません。

良い本を参考にすることをお勧めします。グーグルでプログラミングのことを理解して、友達に教えてもらうのは難しいかもしれません。コーディングは芸術、科学、数学、テクノロジーの融合であり、複雑です。

于 2012-04-05T00:45:52.193 に答える
0

ボタン内に 2 つの if ステートメントがあります。どちらかまたは両方が偽である可能性があります。if ステートメントの近くにブレークポイントを配置し、デバッグ時に渡される値を確認します。または、Amountleft が 0 より大きくない場合に使用したものと同様のメッセージ ボックスを含む else ステートメントを配置します。何かが得られるはずです。

すべての値にブレークポイントを設定して、どの値が渡されているかを確認するのに役立つ場合。

于 2012-04-05T01:17:01.710 に答える