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数据
}
调用窗体(父):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# 调用父窗体的方法
- C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
- C#发邮件 两种方法 实例
- 不能对 varchar 调用方法。
- C# 子线程调用主线程窗体的解决方法
- C# 窗体间调用,通信方法总结
- C#在一个窗体中调用另一个窗体的方法
- C# 非模式窗体show()和模式…
- 转:C#中调用Windows API时的…
- javascript 动态调用方法和传参数
- 关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
- C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
- C#: 调用存储过程或函数显示"需要"参数,但未提供该参数的解决方法
- C# 调用父窗体的方法
- c#中一个窗体调用另一个窗体的控件及方法(转贴)
- C# 子线程调用主线程窗体的解决方法
- C# 窗体间调用,通信方法总结
- C#前后台调用js代码&父窗体执行iframe的保存事件&&弹出窗口中刷新父页面中的iframe页面
- C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
- Discuz 会员头像调用方法之di…