调用窗体(父):Form1,被调用窗体(子):Form2
方法1:   所有权法
//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()   ;
方法2:自身传递法
//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()   ;
方法3:属性法
//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()   ;
方法4:委托法
//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(); 最好用方法四

子窗体向父窗体传值以及父窗体向子窗体传值 
Code
1: 所有权法
//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() ;

eg:

Form1中的函数:

public void DiaoYong(string str)
        {
            this.textBox1.Text =str;
        }

private void button2_Click(object sender, EventArgs e)
        {

string str = this.textBox1.Text;
            Form2 f2 = new Form2(str);//在构造函数中,向子窗体传值。
            f2.Owner = this;
            f2.ShowDialog();
        }

Form2中的函数:

public Form2(string ss)
        {
            InitializeComponent();
            this.textBox1.Text = ss;

}

private void button1_Click(object sender, EventArgs e)
        {
            string st = textBox1.Text;

Form1 f1;
            f1 = (Form1)this.Owner;
            f1.DiaoYong(st);

this.Close();
        }

如何在winform中子窗体提交数据后刷新父窗体中的DataGRIDVIEW数据?

如何在子窗体刷新父窗体的datagridview

父窗体中有个datagridview, 
方法datashow为它绑定数据 
子窗体是从父窗体中创建的,是用来新建数据的 
在子窗体里有个保存按钮 
请问如何在按钮事件中激发父窗体的datashow方法来给datagridview重新绑定数据 
看了资料说要用 委托 
请哪位高手给写个代码 
在 子窗口里 定义事件 
public class childform 

public event EventHandler refreshData = null;

protect void OnRefreshData() 

if( refreshData != null ) 

refreshData( this , eventArgs.Emptys); 

}

private void Save() 

//保存代码 
//刷新父窗口 
OnRefreshData(); 

}

//在父窗口里 
public class ParentForm 

private void Add() 

ChildForm form = new ChildForm(); 
form.refreshData += new refreshData ( refreshData ); 
form.ShowDialog(); 

private void refreshData() 

//刷新Datagridview代码 
........ 

}

C# WinForm 父窗体 子窗体 传值

本次示例效果如下:
Form1为父窗体(包含textBox1、button1)
Form2为子窗体(包含textBox2、button2)

父窗体给子窗体传值
==================
1.点击Form1的button1 打开Form2
父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(this.textBox1.Text);
frm2.Show();
}
}

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public Form2(string strTextBox1Text)
{
InitializeComponent();
this.textBox2.Text = strTextBox1Text;
}
}

2.点击Form1的button1 打开Form2
并调用子窗体Form2的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.TextBox2Text = this.textBox1.Text;
frm2.Show();
}
}

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public string TextBox2Text
{
set { this.textBox2.Text = value; }
get { return this.textBox2.Text; }

}

3.点击Form1的button1 打开Form2
在Form2_Load调用父窗体Form1的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public string TextBox1Text
{
set { this.textBox1.Text = value; }
get { return this.textBox1.Text; }
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);//或 frm2.ShowDialog(this);

////或者
//Form2 frm2 = new Form2();
//frm2.Owner = this;
//frm2.Show();//或 frm2.ShowDialog();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
this.textBox2.Text = frm1.TextBox1Text;
}
}

子窗体给父窗体传值
==================
4.点击Form1的button1 打开Form2
再点击Form2的button2 
在button2_Click事件中 通过this.Owner将Form2的textBox2的值设置给Form1的textBox1
并关闭Form2

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);//或 frm2.ShowDialog(this);

////或者
//Form2 frm2 = new Form2();
//frm2.Owner = this;
//frm2.Show();//或 frm2.ShowDialog();
}
}

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
//注意 如果textBox1是放在panel1中的 则先找panel1 再找textBox1
((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
this.Close();
}
}

5.点击Form1的button1 打开Form2
再点击Form2的button2 
在button2_Click事件中 通过this.Owner及调用父窗体Form1的公开属性或方法 
将Form2的textBox2的值设置给Form1的textBox1
并关闭Form2

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public string TextBox1Text
{
set { this.textBox1.Text = value; }
get { return this.textBox1.Text; }
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);//或 frm2.ShowDialog(this);

////或者
//Form2 frm2 = new Form2();
//frm2.Owner = this;
//frm2.Show();//或 frm2.ShowDialog();
}
}

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
frm1.TextBox1Text = this.textBox2.Text;
this.Close();
}
}

Winform子窗体刷新父窗体的更多相关文章

  1. winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

    winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...

  2. Winfrom子窗体刷新父窗体

    本人比较懒,直接从网上转载了一篇比较合适的文章,只是文章格式有点乱,地址是 http://aspnet.blog.163.com/blog/static/17515510920121126104433 ...

  3. (转载)c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值

    第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System; using System.Collections.Generic; using System.C ...

  4. [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值

    转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2  using System; using Sys ...

  5. 【winform】userControl刷新父窗体的datagridview

    1.ContextMenuStrip 获取右键控件名称 this.contextMenuScriptScore.SourceControl.Name; //当前控件名 2.radiobutton 分组 ...

  6. javactript关闭窗体,刷新父窗体

    //关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script language=javascript>window.close();< ...

  7. Winform中如何实现子窗体刷新父窗体

    原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...

  8. winform 子窗体刷新父窗体的数据

    建一个接口 比如 iMainForm接口内声明个方法 比如 Refresh()主窗体 实现这个接口 主窗体打开子窗体时这样写 子窗体.Owner = this;子窗体.ShowDialog(); -- ...

  9. WinForm------关于子窗体刷新父窗体问题

    链接: http://wenwen.sogou.com/z/q242758397.htm

随机推荐

  1. 第二章实例:ArrayAdapter结合ListView列表视图

    package mydefault.packge; import com.example.codeview.R; import android.app.Activity; import android ...

  2. Oracle创建数据库、表、用户

    create tablespace south_knowledge logging datafile 'D:\TestDatabase\south_knowledge.dbf' size 10m au ...

  3. SpringMVC(一) —— 入门

    SpringMVC原理图: 步骤: 首先用户发送请求.——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程 ...

  4. c++网络通信(与服务器通信聊天)和c#网络通信

    c++网络通信(有待整理) 链接:http://pan.baidu.com/s/1i3nMLKT 密码:ksi8 c#网络通信(tcp/udp两部分) TCP发送端: using System; us ...

  5. AngularJS 深入理解 $scope 转载▼

    AngularJS 深入理解 $scope 转载▼ (2015-04-07 14:09:50)     $scope 的使用贯穿整个 AngularJS App 应用,它与数据模型相关联,同时也是表达 ...

  6. View的工作原理(一)——Measure

    一.认识ViewRoot和DecorView 当Activity对象被创建的时候,会将DecorView添加到Window中,同时创建ViewRootImpl对象(ViewRoot对应于ViewRoo ...

  7. 接口(三)——JAVA的多重继承

    一.接口的作用 ①.为了能够向上转型为多个基类型 ②.防止客户端程序员创建该类的对象——同抽象类 二.通过继承扩展接口 interface Monster{ void menace(); } inte ...

  8. centos安装phpMyAdmin

     phpMyAdmin是一个网络接口,通过它可以管理你的MySQL数据库. 首先,我们使CentOS系统RPMForge软件库的phpMyAdmin,而不是官方的CentOS 6.2库: 所以需要导入 ...

  9. django models 类型整理 version:1.8.3

    django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...

  10. 关于采用MVC开发默认路由导致首页部分文件访问失效的临时解决方案

    最近开发中涉及了Mvc4的开发,其中的默认路由功能是很不错的东西,但是在实际应用中就出现了不少的问题.比如我们访问某网站http://www.abc.com,虽然路由会帮助自动转向Home/Index ...