標籤:
網路上有幾種方法,先總結如下:
調用表單(父):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資料
}
【轉】C# 子表單如何調用父表單的方法