2017-04-30 36 views
0

好的,我有CustomerForm.cs,可以在try,catch和finally聲明中編輯或添加客戶的名字,姓氏和ID。當我使用此代碼在finally語句來調用CustomerList()在MainForm.cs它不會刷新由於某種原因:點擊保存後,如何刷新MainForm.cs中的客戶列表?

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

這是因爲您創建新表格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(); 
} 
+0

謝謝,我所使用的密碼回調的構造函數的參數方法,它工作得很好。 –

相關問題