Winform 子窗体设置刷新父窗体

方法1:所有权法

父窗体:Form1    子窗体:Form2

//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() ;

方法二:自身传递法

//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() ;

方法三:属性法

//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() ;

方法四:委托法

//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();

//子窗体提交后
private void btnOK_Click(object sender, EventArgs e)
{
             this.DialogResult = DialogResult.OK;
             this.Close();
}

//判断子窗体
if(form.ShowDialog() == DialogResult.OK)
{
     刷新父窗体中的DataGRIDVIEW数据
}

我本人用的是第一种方法,比较好操作一些

时间: 2024-10-03 13:45:59

Winform 子窗体设置刷新父窗体的相关文章

关闭子窗体时刷新父窗体

父窗体:NoticeList.aspx:子窗体:NoticeInfo.aspx, 1.NoticeList.aspx中有按钮btnAdd,点击后弹出窗口NoticeInfo.aspx. 弹出窗体代码:1:新增弹出:javascript:window.open(NoticeInfo.aspx');: 2:编辑弹出:<a href=NoticeInfo.aspx?PID=<%#Eval("NewsID") %>' target="_blank">

Winform子窗体刷新父窗体

调用窗体(父):Form1,被调用窗体(子):Form2方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2   f2   =   new   Form2()   ;f2.Owner   =   this;f2.ShowDialog()   ;//Form2://在需要对其调用者(父)刷新时Form1   f1   ;f1   =  

Winfrom子窗体刷新父窗体

本人比较懒,直接从网上转载了一篇比较合适的文章,只是文章格式有点乱,地址是 http://aspnet.blog.163.com/blog/static/17515510920121126104433237/ 调用窗体(父):Form1,被调用窗体(子):Form2 方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2   f2   =

WPF 子窗体关闭,刷新父窗体

父窗体代码 private void DGUserEdit() { if(DGUser.SelectedItem!=null) { DataRow dr = (DGUser.SelectedItem as DataRowView).Row; Page.UserEdit UE = new UserEdit(UserGrade, dr["UserName"].ToString());//声明子窗体 UE.Closed += new EventHandler(UE_Closed);//注册关

【转】C# 子窗体如何调用父窗体的方法

网络上有几种方法,先总结如下: 调用窗体(父):FormFather,被调用窗体(子):FormSub. 方法1: 所有权法       //FormFather:        //需要有一个公共的刷新方法       public void Refresh_Method()        {                //...        }        //在调用FormSub时,要把FormSub的所有者设为FormFather        FormSub f2 = new

c#如何将子窗体显示到父窗体的容器(panel)控件中

如何将一个窗体显示到一个容器控件中,刚开始想的比较简单,用窗体容器控件添加一般控件的方法,试了一试,代码如下: Form2 frm = new Form2(); this.panel1.Controls.Add(frm); frm.Show(); 但是提示了一个错误:无法将顶级控件添加到控件. 原来窗体是一个顶级控件,是无法将一个顶级控件添加到一个容器中来的.最后在网上找了相关资料,只需要将代码改下即可,还是原来的思路,代码如下: Form2 frm = new Form2(); frm.Top

iframe子页面内刷新父页面中另一个iframe子页面

框架页面如下: <div id="aa" style="float: left; height: 500px; border-right-style: solid; border-right-color: #CCCCFF; border-right-width: 2px;"> <IFRAME id="tree" name="tree" src="/ScienProjectWeb/commonjsp/

JS实现关闭当前子窗口,刷新父窗口

一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() {  window.opener.location.href = window.opener.location.href;  window.close();   }              </script>

JS实现关闭当前子窗口,刷新父窗口及调用父窗口的方法

一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() { window.opener.location.href = window.opener.location.href; window.close(); } </script> html页面代码如下: <input type="button" id="btn1" class="btn" valu