如何修改窗体3中窗体2的值c sharp windows窗体应用程序

问题描述:

我正在创建一个由3个窗体组成的简单ATM。
Form 1包含3个按钮:平衡和提取。
Form 2是余额表格,当用户点击余额按钮时显示。它显示当前余额,默认值为5000,并显示在文本框中。
Form 3是提款表单,当用户点击提款按钮时显示。它包含用户想要撤回金额的文本框以及Okay按钮。如何修改窗体3中窗体2的值c sharp windows窗体应用程序

我的问题是如何在用户提取金额时更改余额的值?

您应该使用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

在您的取款表格添加一个方法类似

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