Winform子窗体刷新父窗体

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

调用窗体(父):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子窗体刷新父窗体,布布扣,bubuko.com

Winform子窗体刷新父窗体

上一篇:【转】【C#】C#重绘windows窗体标题栏和边框


下一篇:有效控制Android应用程序的耗电量