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

转自:http://heisetoufa.iteye.com/blog/382684

第一种方法: 


用委托,Form2和Form3是同一组 

Form2 

C#代码 复制代码
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace TestMouseMove   
  10. {   
  11.     public delegate void SetVisiableHandler();   
  12.   
  13.     public partial class Form2 : Form   
  14.     {   
  15.         public Form2()   
  16.         {   
  17.             InitializeComponent();   
  18.         }   
  19.         private void button1_Click(object sender, EventArgs e)   
  20.         {   
  21.             Form3 frm = new Form3(new SetVisiableHandler(SetVisiable));   
  22.             frm.Show();   
  23.         }   
  24.   
  25.         private void SetVisiable()   
  26.         {   
  27.             SetVisiable(this.label1, !this.label1.Visible);   
  28.         }   
  29.   
  30.         private void SetVisiable(Control control, bool visiable)   
  31.         {   
  32.             if (this.Controls.Contains(control))   
  33.             {   
  34.                 control.Visible = visiable;   
  35.             }   
  36.         }   
  37.   
  38.     }   
  39. }  
[c#] view plaincopy
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.   
  9. namespace TestMouseMove  
  10. {  
  11.     public delegate void SetVisiableHandler();  
  12.   
  13.     public partial class Form2 : Form  
  14.     {  
  15.         public Form2()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.         private void button1_Click(object sender, EventArgs e)  
  20.         {  
  21.             Form3 frm = new Form3(new SetVisiableHandler(SetVisiable));  
  22.             frm.Show();  
  23.         }  
  24.   
  25.         private void SetVisiable()  
  26.         {  
  27.             SetVisiable(this.label1, !this.label1.Visible);  
  28.         }  
  29.   
  30.         private void SetVisiable(Control control, bool visiable)  
  31.         {  
  32.             if (this.Controls.Contains(control))  
  33.             {  
  34.                 control.Visible = visiable;  
  35.             }  
  36.         }  
  37.   
  38.     }  
  39. }  



Form3 

C#代码 复制代码
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace TestMouseMove   
  10. {   
  11.     public partial class Form3 : Form   
  12.     {   
  13.         private SetVisiableHandler m_setVisible;   
  14.   
  15.         public Form3(SetVisiableHandler setvisible)   
  16.         {   
  17.             InitializeComponent();   
  18.             this.m_setVisible = setvisible;   
  19.         }   
  20.         private void btnVisible_Click(object sender, EventArgs e)   
  21.         {   
  22.             if (this.m_setVisible != null)   
  23.             {   
  24.                 this.m_setVisible();   
  25.             }   
  26.         }   
  27.   
  28.     }   
  29. }  
[c#] view plaincopy
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.   
  9. namespace TestMouseMove  
  10. {  
  11.     public partial class Form3 : Form  
  12.     {  
  13.         private SetVisiableHandler m_setVisible;  
  14.   
  15.         public Form3(SetVisiableHandler setvisible)  
  16.         {  
  17.             InitializeComponent();  
  18.             this.m_setVisible = setvisible;  
  19.         }  
  20.         private void btnVisible_Click(object sender, EventArgs e)  
  21.         {  
  22.             if (this.m_setVisible != null)  
  23.             {  
  24.                 this.m_setVisible();  
  25.             }  
  26.         }  
  27.   
  28.     }  
  29. }  



第二种方法: 

用变量,Form4和Form5是同一组 

Form4 

C#代码 复制代码
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace TestMouseMove   
  10. {   
  11.     public partial class Form4 : Form   
  12.     {   
  13.         public Form4()   
  14.         {   
  15.             InitializeComponent();   
  16.         }  
  17.  
  18.         #region 子窗口刷新父窗口的值   
  19.   
  20.         private string strLabel1 = "";   
  21.   
  22.         public string StrLabel1   
  23.         {   
  24.             get  
  25.             {   
  26.                 return strLabel1;   
  27.             }   
  28.             set  
  29.             {   
  30.                 strLabel1 = value;   
  31.                 this.label1.Text = strLabel1;   
  32.             }   
  33.         }  
  34.         #endregion   
  35.   
  36.         private void button1_Click(object sender, EventArgs e)   
  37.         {   
  38.             Form5 form5 = new Form5(this);//这里注意传个this   
  39.             form5.Show();   
  40.         }   
  41.     }   
  42. }  
[c#] view plaincopy
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.   
  9. namespace TestMouseMove  
  10. {  
  11.     public partial class Form4 : Form  
  12.     {  
  13.         public Form4()  
  14.         {  
  15.             InitializeComponent();  
  16.         }  
  17.  
  18.         #region 子窗口刷新父窗口的值  
  19.   
  20.         private string strLabel1 = "";  
  21.   
  22.         public string StrLabel1  
  23.         {  
  24.             get  
  25.             {  
  26.                 return strLabel1;  
  27.             }  
  28.             set  
  29.             {  
  30.                 strLabel1 = value;  
  31.                 this.label1.Text = strLabel1;  
  32.             }  
  33.         }  
  34.         #endregion  
  35.   
  36.         private void button1_Click(object sender, EventArgs e)  
  37.         {  
  38.             Form5 form5 = new Form5(this);//这里注意传个this  
  39.             form5.Show();  
  40.         }  
  41.     }  
  42. }  



Form5 

C#代码 复制代码
    1. using System;   
    2. using System.Collections.Generic;   
    3. using System.ComponentModel;   
    4. using System.Data;   
    5. using System.Drawing;   
    6. using System.Text;   
    7. using System.Windows.Forms;   
    8.   
    9. namespace TestMouseMove   
    10. {   
    11.     public partial class Form5 : Form   
    12.     {   
    13.         Form4 form4 = new Form4();   
    14.   
    15.         public Form5(Form4 formFrm)//这个构造方法里有参数   
    16.         {   
    17.             form4 = formFrm; //这个必须要有   
    18.             InitializeComponent();   
    19.         }   
    20.   
    21.           
    22.         private void button1_Click(object sender, EventArgs e)   
    23.         {   
    24.             form4.StrLabel1 = this.textBox1.Text;   
    25.         }   
    26.     }   
原文地址:https://www.cnblogs.com/slow/p/3333049.html