精华内容
下载资源
问答
  • 调用窗体(父):Form1,被调用窗体(子):Form2方法1: 所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2 f2 = new Form2() ;...

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

    转载于:https://www.cnblogs.com/Gyutao/p/5607172.html

    展开全文
  • winform窗体数据改变刷新窗体

    千次阅读 2014-05-06 18:30:20
    第一步: 在主窗体中拉一个Timer

    两种方法实现:

    第一种,传时间变量,主窗体要不停的刷新数据,占用资源比较大。

    第二种,用this,感觉比较好用,建议用这种方法。

    举例:

    主窗体命名:FormA;

    子窗体命名:FormB;

    数据绑定方法:DataBind();

    第一种具体实现如下:

    FormA:

    拉一个Timer控件,例:

    1>属性设置:

     名字:   timer1

    Enable:   ture

    Interval:   1000

    2>加载事件

    tick:timer1_Tick


    3>写代码

    (1)定义一个公共静态变量:

          public static bool timetf=false;//时间变量

    (2)timer事件代码:

     if (timetf == true)
     {
            DataBind();//数据绑定
            timetf = false;//绑定之后,设为FALSE,不然每秒都刷新,浪费资源

     }

    FormB

    添加成功(或修改成功)之后调用这个时间变量,设置为TRUE,让主船体更新数据。

    例:

           FormB.timetf = true;
          MessageBox.Show("保存成功!");


    第二种具体做法:

    1>FormA(主窗体)调用子窗体时:

      FormB fb=new FormB(this);

      fb.ShowDialog();

     备注:DataBind()方法是公共的;

    2>子窗体:

    (1),加一句代码:

    FormA fa;
            public FormB(FormA fa)
            {   
                this.fa = fa;
                InitializeComponent();
            }

    (2)添加或修改成功时,可以直接调用这个方法

          FormA.DataBind();
               MessageBox.Show("保存成功!");




    展开全文
  • [Winform]winform 刷新窗体(转)

    千次阅读 2016-04-10 13:58:58
    网络上有几种方法,先总结如下:调用窗体(父):Form1,被调用窗体(子):Form2方法1: 所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为...

    网络上有几种方法,先总结如下:
    调用窗体(父):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();

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


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

     

    -----------------------------------------------------------------------------------------------------------

    以上是在网上转载的。

    我用的方法如下:

    父窗体FrmMain 子窗体:FrmUpdateUser

    父窗体的刷新方法 :

    public  void  BindListLogin()
    {
    c1FlexGrid1.DataSource = wbl.GetAllList().Tables[0];
    }

     在调用子窗体的地方写以下代码:

    private  void  c1FlexGrid1_DoubleClick( object  sender, EventArgs e)
           {
               C1ID = int .Parse(c1FlexGrid1[c1FlexGrid1.Row, 1].ToString().Trim());
              // MessageBox.Show(Convert.ToString(C1ID));
               FrmUpdateUser fuu = new  FrmUpdateUser();
               fuu.Owner = this ;
               fuu.ShowDialog();
           }

     在子窗体修改数据后 写以下代码:

    复制代码
     private void c1Button1_Click(object sender, EventArgs e)
            {
                if (txtLoginName.Text.Trim() != wbl.GetModel(fmain.LoginID).LoginName.Trim())
                {
                    //说明用户名有改动 要检查是否重复!
                    if (wbl.Exists(txtLoginName.Text.Trim()))
                    {
                        MessageBox.Show("对不起,此用户名已存在!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtLoginName.Focus();
                        return;
                    }
                    else
                    {
                        Model .Login model=new Model.Login ();
                        model .LoginName =txtLoginName .Text.Trim();
                        model .LoginPass =txtLoginPass.Text.Trim();
                        model.LoginID = fmain.LoginID;
                        wbl.Update(model);
                        MessageBox.Show("更新成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       FrmMain fmm= (FrmMain )this.Owner ;
                       fmm.BindListLogin();
                       this.Close();
                    }
                }
            }
    复制代码

    测试通过没问题 ~~~

    展开全文
  • 第一种,传时间变量,主窗体要不停的刷新数据,占用资源比较大。 第二种,用this,感觉比较好用,建议用这种方法。 举例: 主窗体命名:FormA; 子窗体命名:FormB; 数据绑定方法:DataBind(); 第一种具体实现...

    两种方法实现:

    第一种,传时间变量,主窗体要不停的刷新数据,占用资源比较大。

    第二种,用this,感觉比较好用,建议用这种方法。

    举例:

    主窗体命名:FormA;

    子窗体命名:FormB;

    数据绑定方法:DataBind();

    第一种具体实现如下:

    FormA:

    拉一个Timer控件,例:

    1>属性设置:

     名字:   timer1

    Enable:   ture

    Interval:   1000

    2>加载事件

    tick:timer1_Tick


    3>写代码

    (1)定义一个公共静态变量:

          public static bool timetf=false;//时间变量

    (2)timer事件代码:

     if (timetf == true)
     {
            DataBind();//数据绑定
            timetf = false;//绑定之后,设为FALSE,不然每秒都刷新,浪费资源

     }

    FormB

    添加成功(或修改成功)之后调用这个时间变量,设置为TRUE,让主船体更新数据。

    例:

           FormB.timetf = true;
          MessageBox.Show("保存成功!");


    第二种具体做法:

    1>FormA(主窗体)调用子窗体时:

      FormB fb=new FormB(this);

      fb.ShowDialog();

     备注:DataBind()方法是公共的;

    2>子窗体:

    (1),加一句代码:

    FormA fa;
            public FormB(FormA fa)
            {   
                this.fa = fa;
                InitializeComponent();
            }

    (2)添加或修改成功时,可以直接调用这个方法

          FormA.DataBind();
               MessageBox.Show("保存成功!");




    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载于:https://www.cnblogs.com/Jackerson/p/4632035.html

    展开全文
  • 可实现在子窗体执行完某一操作后同步刷新窗体,主要通过委托事件实现。
  • 网络上有几种方法,先总结如下:调用窗体(父):Form1,被调用窗体(子):Form2方法1: 所有权法//Form1://需要有一个公共的刷新方法public void Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为...
  • winform打开子窗体后,在子窗体刷新窗体,或者关闭子窗体刷新窗体,搜集了几个方法,列举如下: 一 、 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始化方法。如: ...
  • 关键字: c# winform窗体 刷新窗体窗体 父 控件 值 第一种方法:用委托,Form2和Form3是同一组Form2C#代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;...
  • winform 窗体重新加载代码

    千次阅读 2017-04-13 14:38:16
    //先隐藏主窗体 Form1 form1 = new Form1(); //重新实例化此窗体 form1.ShowDialog();//已模式窗体的方法重新打开 this.Close();//原窗体关闭原文:http://blog.sina.com.cn/s/blog_61ff136b0101klw2.html
  • Winform中如何实现子窗体刷新窗体

    千次阅读 2013-10-31 19:05:50
    Winform中如何实现子窗体刷新窗体
  • winform 用子窗体刷新窗体,子窗体改变父窗体控件的值 2012-08-29 13:18 by swarb, ... 阅读, ... 评论, 收藏, 编辑 第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System;  using ...
  • WinForm常用窗体属性及控件

    千次阅读 2015-12-27 15:56:14
    WinForm常用窗体属性: Form常用属性 AutoSizeMode属性 :值是: GrowAndShrink不能调整窗体大小 ;值是:GrowOnly 可以改变大小 (1)Name属性:用来获取或设置窗体的名称。 (2)...
  • 窗体A :代码如下: public delegate void BrushPermission();//定义一个委托 /// <summary> /// 刷新主界面的权限(功能按钮) /// </summary> public event BrushPermission brushpermissi....
  • 新建winform窗体Form1和Form2; 接下来要通过点击Form2的按钮,实现Form1界面的同步刷新。 先展示一下最终效果: 1.Form1界面如下: 2.点击按钮弹出Form2,界面如下: 3.点击Form2按钮弹出提示框,点击“是”实现...
  • 1.其实实现主窗体刷新无非就是比较简单的调用load事件重新加载数据绑定,但是这样的效果会带来,无状态刷新,页面无法保存上一次的页面状态,比如 刷新刷新后 ,如果点击刷新按钮执行的话,那么树形菜单...
  • Winform中如何实现父窗体传递数据到子窗体刷新窗体 原理:利用委托和事件
  • 第一种方法: 用委托,Form2和Form3是同一组 Form2 <br />C#代码 using System;  using System.Collections.Generic;  using System.ComponentModel;  using System....
  • 有两个界面A,B,下面要实现的功能是在界面A中执行完某项操作时,同步执行B界面中的方法,以达到刷新B窗体的目的 界面A中声明委托事件的代码如下: public delegate void re(); public event re refresh; // 声明...
  • 第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System
  • 主要是前两天,有个同学问我这个方面的内容,当时利用了委托事件的方法来解决的,感觉效果还是挺好的。于是便记录了下来,以作备忘。...父窗体代码如下: usingSystem; usingSystem.Collections.Generic; us...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,007
精华内容 802
关键字:

winform刷新窗体代码