網絡上有幾種方法,先總結如下: 調用窗體(父):FormFather,被調用窗體(子):FormSub 方法1: 所有權法 //FormFather: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //在調用FormSub時,要把FormSub的所有者設為FormFather FormSub f2 = new FormSub() ; f2.Owner = this; f2.ShowDialog() ; //FormSub: //在需要對其調用者(父)刷新時 FormFather f1 ; f1 = (FormFather)this.Owner; f1.Refresh_Method() ; 方法2:自身傳遞法 //FormFather: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } FormSub f2 = new FormSub() ; f2.ShowDialog(this) ; //FormSub: private FormFather p_f1; public FormSub(FormFather f1) { InitializeComponent(); p_f1 = f1; } //刷新時 p_f1.Refresh_Method() ; 方法3:屬性法 //FormFather: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //調用時 FormSub f2 = new FormSub() ; f2.P_F1 = this; //重點,賦值到子窗體對應屬性 f2.Show() ; //FormSub: private FormFather p_f1; public FormFather P_F1 { get{return p_f1;} set{p_f1 = value;} } //刷新時 p_f1.Refresh_Method() ; 方法4:委托法 //FormFather: //需要有一個公共的刷新方法 public void Refresh_Method() { //... } //調用時 FormSub f2 = new FormSub() ; f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ; f2.Show() ; //FormSub: //聲明一個委托 public delegate void DisplayUpdate(); //聲明事件 public event DisplayUpdate ShowUpdate; //刷新時,放在需要執行刷新的事件里 if(ShowUpdate!=null) ShowUpdate(); //子窗體提交后 private void btnOK_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; this.Close(); } //判斷子窗體 if(form.ShowDialog() == DialogResult.OK) { 刷新父窗體中的DataGRIDVIEW數據 }