c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值

本文介绍两种方法实现子窗体更新父窗体的方法:第一种使用委托,通过定义委托并在子窗体中调用父窗体的方法来改变父窗体控件的状态;第二种方法是通过引用传递父窗体实例,在子窗体中直接访问并修改父窗体的属性。
第一种方法:
用委托,Form2和Form3是同一组
Form2
using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;   
using System.Text;   
using System.Windows.Forms;   
  
namespace TestMouseMove   
{   
    
public delegate void SetVisiableHandler();   
  
    
public partial class Form2 : Form   
    {   
        
public Form2()   
        {   
            InitializeComponent();   
        }   
        
private void button1_Click(object sender, EventArgs e)   
        {   
            Form3 frm 
= new Form3(new SetVisiableHandler(SetVisiable));   
            frm.Show();   
        }   
  
        
private void SetVisiable()   
        {   
            SetVisiable(
this.label1, !this.label1.Visible);   
        }   
  
        
private void SetVisiable(Control control, bool visiable)   
        {   
            
if (this.Controls.Contains(control))   
            {   
                control.Visible 
= visiable;   
            }   
        }   
  
    }   
}  

Form3

using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;   
using System.Text;   
using System.Windows.Forms;   
  
namespace TestMouseMove   
{   
    
public partial class Form3 : Form   
    {   
        
private SetVisiableHandler m_setVisible;   
  
        
public Form3(SetVisiableHandler setvisible)   
        {   
            InitializeComponent();   
            
this.m_setVisible = setvisible;   
        }   
        
private void btnVisible_Click(object sender, EventArgs e)   
        {   
            
if (this.m_setVisible != null)   
            {   
                
this.m_setVisible();   
            }   
        }   
  
    }   
}  

 

第二种方法:
用变量,Form4和Form5是同一组
Form4

using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;   
using System.Text;   
using System.Windows.Forms;   
  
namespace TestMouseMove   
{   
    
public partial class Form4 : Form   
    {   
        
public Form4()   
        {   
            InitializeComponent();   
        }  
 
        
#region 子窗口刷新父窗口的值   
  
        
private string strLabel1 = "";   
  
        
public string StrLabel1   
        {   
            
get  
            {   
                
return strLabel1;   
            }   
            
set  
            {   
                strLabel1 
= value;   
                
this.label1.Text = strLabel1;   
            }   
        }  
        
#endregion   
  
        
private void button1_Click(object sender, EventArgs e)   
        {   
            Form5 form5 
= new Form5(this);//这里注意传个this   
            form5.Show();   
        }   
    }   
}  

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestMouseMove
{
    
public partial class Form4 : Form
    {
        
public Form4()
        {
            InitializeComponent();
        }

        
#region 子窗口刷新父窗口的值

        
private string strLabel1 = "";

        
public string StrLabel1
        {
            
get
            {
                
return strLabel1;
            }
            
set
            {
                strLabel1 
= value;
                
this.label1.Text = strLabel1;
            }
        }
        
#endregion

        
private void button1_Click(object sender, EventArgs e)
        {
            Form5 form5 
= new Form5(this);//这里注意传个this
            form5.Show();
        }
    }
}

 

Form5

using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;   
using System.Text;   
using System.Windows.Forms;   
  
namespace TestMouseMove   
{   
    
public partial class Form5 : Form   
    {   
        Form4 form4 
= new Form4();   
  
        
public Form5(Form4 formFrm)//这个构造方法里有参数   
        {   
            form4 
= formFrm; //这个必须要有   
            InitializeComponent();   
        }   
  
          
        
private void button1_Click(object sender, EventArgs e)   
        {   
            form4.StrLabel1 
= this.textBox1.Text;   
        }   
    }   
}  

 

 

转载于:https://www.cnblogs.com/arongbest/archive/2009/12/25/1632158.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值