单击“保存”后,如何在MainForm.cs中刷新客户列表?

时间:2017-04-30 16:53:50

标签: c# winforms

好的,我有CustomerForm.cs客户'可以在try,catch和finally语句中编辑或添加名字,姓氏和ID。当我在finally语句中使用此代码来调用MainForm.cs中的CustomerList()时,由于某种原因它不会刷新:

finally
        {
            MainForm mf = new MainForm();
            mf.CustomersList();
        }

在MainForm.cs中,这是CustomerList();

public void CustomersList()
    {

        da.CommandText = "SELECT Id, FIrstName, LastName FROM Customers ORDER BY Id DESC";
        da.OpenDBConnection();
        da.CreateCommandObject();
        gridCustomers.DataSource = da.FillDataTable();           
    }

为什么不刷新?有没有更好的方法刷新客户名单?

1 个答案:

答案 0 :(得分:0)

这是因为您创建了新表单MainForm mf = new MainForm();。您应该将对现有MainForm的引用传递到您的CustomerForm。或者你只需​​要传递应该执行的回调。

1)创建CustomerForm时的某些内容:

var customerForm = new CustomerForm(mainForm); //pass through constructor

以客户形式:

finally{
    mainForm.CustomersList();
}

客户表单构造函数:

public CustomerForm(MainForm mainForm)
{
    //some initialization stuff
    this.mainForm = mainForm;
}

2)将回调作为构造函数参数传递:

var customerForm = new CustomerForm(CustomersList); //this will work inside MainForm

public CustomerForm(Action updateCustomers)
{
    //some initialization stuff
    this.updateCustomers = updateCustomers;
}

使用回调:

finally {
    updateCustomers();
}