2015-03-03 51 views
-1

我正在創建一個由3個窗體組成的簡單ATM。
Form 1包含3個按鈕:平衡和提取。
Form 2是餘額表格,當用戶點擊餘額按鈕時顯示。它顯示當前餘額,默認值爲5000,並顯示在文本框中。
Form 3是提款表單,當用戶點擊提款按鈕時顯示。它包含用戶想要撤回金額的文本框以及Okay按鈕。如何修改窗體3中窗體2的值c sharp windows窗體應用程序

我的問題是如何在用戶提取金額時更改餘額的值?

回答

3

您應該使用AtmModel類來存儲餘額。

public class AtmModel 
{ 
    public int Balance { get; set; } 

    public void WithdrawBalance (int amount) 
    { 
     this.Balance -= amount; 
    } 
} 

您的主窗體應該有一個存儲您的AtmModel的私有字段。這個模型在View的(Form)構造函數中被初始化。

從主窗體打開的每個附加窗體都應該有一個帶AtmModel參數的構造函數。

現在您可以將模型傳遞給其他表單,您可以訪問Balance屬性和WithdrawBalance方法。

所以basicly這樣的:

public partial class AtmMainView : Form 
{ 
    AtmModel model; 

    public AtmMainView() 
    { 
     InitializeComponent(); 
     this.model = new AtmModel(); 
    } 

    private void Withdraw_Click(object sender, System.EventArgs e) 
    { 
     AtmWithdrawView form = new AtmWithdrawView(this.model); 
     form.Show(); 
    } 
} 

所以,當你點擊你的提款主窗體上按鈕,你所引用的AtmModel打開你的其他形式。在您的WithdrawForm您現在可以在確定按鈕上應用單擊事件,執行AtmModel.WithdrawBalance,並在您的文本框中聲明數量。

然而,這種設計並不完美,但它爲您提供瞭解決問題的方法。

欲瞭解更多信息,請閱讀:
Getting Started with Windows Forms

The Model-View-Controller(MVC) Pattern with C#/WinForms

+0

謝謝主席先生...... – Ricardo 2015-03-04 11:31:34

+0

先生我應該如何去顯示和文本框設置的默認值5000平衡形式? – Ricardo 2015-03-04 12:13:46

+0

從現在開始你有一個模型,它在所有表單之間共享。您可以訪問它的Balance屬性。所以在你的模型構造函數中,你可以設置this.Balance = 5000然後在你的平衡形式中,你可以設置textbox.text = this.model.Balance。 使用數據綁定的更好的做法,但如果您不熟悉它,那麼就堅持我之前提到的。 – 2015-03-04 13:13:05

1

在您的取款表格添加一個方法類似

public int GetWithdrawalValue() 
{ 
    int withdrawalValue; 
    int.TryParse(textboxWithdrawal.Text, out withdrawalValue); 
    return withdrawalValue; 
} 

顯示您的取款單模式

Form3 formWithdrawal = new Form3(); 
formWithdrawal.ShowDialog(); 
int valueToWithdraw = formWithdrawal.GetWithdrawalValue(); 

這應該做的伎倆。

+0

謝謝@stefankmitph – Ricardo 2015-03-04 11:41:03

相關問題