以下哪项是将子形式的数据保存到数据库的正确方法?

时间:2019-06-23 11:46:10

标签: c# winforms parent-child

我的申请中有一个父母形式和一个孩子形式。让我们将父窗体称为frmCustomers,将子窗体称为frmAccountDetails。 frmCustomers在datagridview控件中具有银行客户的详细信息,例如其姓名,地址,电话号码等。在datagridview中单击按钮时,将弹出frmAccountDetails,其中包含所选客户所拥有的帐户的详细信息。用户可以在frmAccountDetails中编辑详细信息,然后在其中单击“保存”或“取消”按钮。我的问题是关于btnSave_Click事件中应该出现什么。以下哪项是保存在frmAccountDetails中编辑的数据的正确方法?

1。

btnSave_Click(object sender, EventArgs e)
{
  // Open a connection to the database from frmAccountDetails 
  // and save the edited details to the database
}

OR

2。

btnSave_Click(object sender, EventArgs e)
{
  // Pass edited details in frmAccountDetails to frmCustomers
  // and save the details to the DB in the save click event of that form
}

以上2种方法中哪一种是正确的方法?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我更喜欢2种方式。因为frmAccountDetails仅显示数据。 我建议您可以使用dependency injection来实现它。

这里是一个例子。我认为这会对您有所帮助。

public interface IEditAccount
{
    // you can change the type.
    // Save Click Event
    void Save(string someData);

    // Cancel Event
    void Cancel();
}


public partial class frmAccountDetails : Form
{
    public IEditAccount EditAccount { set; }

    public frmAccountDetails()
    {
        InitializeComponent();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        EditAccount.Save("Some Data");
    }
}

public partial class frmCustomers : Form, IEditAccount
{
    public frmCustomers()
    {
        InitializeComponent();
    }

    private void DisplayAccountDetails(object sender, EventArgs e)
    {

        var form = new frmAccountDetails();
        form.EditAccount = this;
        form.Show();
    }

    public void Save(string someData)
    {
        // When user click the frmAccountDetails.btnSave_Click_Click you can get the someData
        // Save the someData to the database  
    }

    public void Cancel()
    {
        // user click the cancel
    }
}