winform打開子窗體后,在子窗體中刷新父窗體,或者關閉子窗體刷新父窗體,搜集了幾個方法,列舉如下:
一 、 所有權法
父窗體,名稱為“fuForm”,在父窗體中有個公共刷新方法,也就是窗體數據初始化方法。如:
public void reLoad_method() { //窗體數據初始化方法,fuForm_Load中的全部操作,調用此方法可實現數據的刷新 }
fuForm中打開ziForm時需要設置所有者,就是ziForm的所有者是fuForm,代碼如下:
ziForm _ziForm = new ziForm (); _ziForm.Owner = this; _ziForm.ShowDialog();
ziForm關閉或者需要刷新fuForm時,代碼如下:
fuForm _fuForm ; _fuForm = (fuForm )this.Owner; _fuForm.reLoad_method();
二、自身傳遞法
在父窗體中有個公共刷新方法,如:
public void reLoad_method() { //窗體數據初始化方法,fuForm_Load中的全部操作,調用此方法可實現數據的刷新 }
父窗體打開子窗體方法代碼:
ziForm _ziForm = new ziForm() ; _ziForm.ShowDialog(this) ;
子窗體中:
private fuForm _fuForm; public ziForm(fuForm fromfuForm) { InitializeComponent(); _fuForm = fromfuForm; } //刷新時 _fuForm.reLoad_method();
三、屬性法
在父窗體中有個公共刷新方法,如:
public void reLoad_method() { //窗體數據初始化方法,fuForm_Load中的全部操作,調用此方法可實現數據的刷新 }
父窗體打開子窗體方法代碼
ziForm _ziForm = new ziForm() ; _ziForm.fuFormX = this; _ziForm.Show() ;
子窗體中:
private fuForm fuFormXy; public fuForm fuFormX { get{return fuFormXy;} set{fuFormXy = value;} } //刷新時 fuFormXy.reLoad_method() ;
四、委托法
在父窗體中有個公共刷新方法,如:
public void reLoad_method() { //窗體數據初始化方法,fuForm_Load中的全部操作,調用此方法可實現數據的刷新 }
父窗體打開子窗體方法代碼
ziForm _ziForm = new ziForm(); _ziForm.ShowUpdate += new DisplayUpdate(reLoad_method);
_ziForm.Show();
子窗體中:
//聲明一個委托 public delegate void DisplayUpdate(); //聲明事件 public event DisplayUpdate ShowUpdate; //刷新時,放在需要執行刷新的事件里 ShowUpdate();
在以上幾個方法中,個人認為第一個所有權法最好用,容易理解,而且代碼簡潔,推薦使用第一種方法。