調用窗體(父):Form1,被調用窗體(子):Form2 方法1: 所有權法 //Form1: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //在調用Form2時,要把Form2的所有者設為Form1 Form2 f2 = new Form2() ; f2.Owner = this; f2.ShowDialog() ; //Form2: //在需要對其調用者(父)刷新時 Form1 f1 ; f1 = (Form1)this.Owner; f1.Refresh_Method() ; 方法2:自身傳遞法 //Form1: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } Form2 f2 = new Form2() ; f2.ShowDialog(this) ; //Form2: private Form1 p_f1; public Form2(Form1 f1) { InitializeComponent(); p_f1 = f1; } //刷新時 p_f1.Refresh_Method() ; 方法3:屬性法 //Form1: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //調用時 Form2 f2 = new Form2() ; f2.P_F1 = this; f2.Show() ; //Form2: private Form1 p_f1; public Form1 P_F1 { get{return p_f1;} set{p_f1 = value;} } //刷新時 p_f1.Refresh_Method() ; 方法4:委托法 //Form1: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //調用時 Form2 f2 = new Form2() ; f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ; f2.Show() ; //Form2: //聲明一個委托 public delegate void DisplayUpdate(); //聲明事件 public event DisplayUpdate ShowUpdate; //刷新時,放在需要執行刷新的事件里 ShowUpdate();
以下是我按照方法一實現的刷新父窗體的功能。
子窗體:
ShouRu.FrmSrCategoryAdd frmAddCategory = new FrmSrCategoryAdd(); frmAddCategory.Owner = this; frmAddCategory .ShowDialog ();
父窗體:
ShouRu.FrmSrCategoryAdd frmAddCategory = new FrmSrCategoryAdd(); frmAddCategory.Owner = this; frmAddCategory .ShowDialog ();