C# Windows Form 刷新父窗体

第一种方法:
用委托,Form2和Form3是同一组
Form2

C#代码

 

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

C#代码

 

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

C#代码

 

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;  
        }  
    }  
}

第3种方法

遍历窗体查找

foreach (Form frm in Application.OpenForms)
            {
                if (frm.Name == "要找的状体")
                {
                    frm.Refresh();
                }
            }

posted @ 2009-12-21 09:43  Sissynong  阅读(1197)  评论(0编辑  收藏  举报