• 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(); } }

  • 相关阅读:
    【转】Unity中的协同程序-使用Promise进行封装(二)
    结合索引优化SQL语句提高数据库查询效率
    结合索引优化SQL语句提高数据库查询效率
    数据库SQL优化大总结之百万级数据库优化方案
    Oracle回收站功能,彻底删除表(purge recyclebin)
    Oracle回收站功能,彻底删除表(purge recyclebin)
    分布式环境中三种Session管理方法的使用场景及优缺点
    分布式环境中三种Session管理方法的使用场景及优缺点
    [转载]“对不起,我家里不同意”多少爱情败给了它?
    [转载]“对不起,我家里不同意”多少爱情败给了它?
  • 原文地址:https://www.cnblogs.com/FLWL/p/3885021.html
Copyright © 2020-2023  润新知