您的位置:首页 > 编程语言 > C#

C# 子窗体调用父窗体的方法

2014-09-10 15:21 204 查看
原文地址:子窗体调用父窗体的方法">C# 子窗体调用父窗体的方法作者:吴培洪网络上有几种方法,先总结如下:

调用窗体(父):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数据

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: