好的,我有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();
}
为什么不刷新?有没有更好的方法刷新客户名单?
答案 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();
}