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

第一种方法:

用委托,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;
                }
            }  

        }
    }  Form3C#代码:
    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();
            }
        }
    }  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;
            }
        }
    }
 

文章转载来源:http://heisetoufa.iteye.com/blog/382684

第二种方法已经试过,不错!

时间: 2024-10-10 05:11:44

(转载)c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值的相关文章

Winform中实现更改DevExpress的RadioGroup的选项时更改其他控件(TextEdit、ColorPickEdit)的值

场景 Winform中实现读取xml配置文件并动态配置ZedGraph的RadioGroup的选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100540708 在上面实现了将RadioGroup的选项根据配置文件动态配置后, 比如这里有三个选项,在更改选项时会对其他的控件的值进行更改. 效果 关注公众号霸道的程序猿获取编程相关电子书.教程推送与免费下载.大量编程视频教程:https://space.bilibili.c

4、CRM2011编程实战——将窗体中指定控件的值做处理后更新到另一个字段中

需求:将接报时间加上到期提醒时间后得到的值,更新到字段"到期截止时间" Js调用: //设置到期截止时间 function setDeadLine(){ var recordId = Xrm.Page.data.entity.getId(); var entityName = Xrm.Page.data.entity.getEntityName(); var reportedTime = Xrm.Page.getControl("hxcs_fdatetimeofrequest

子页面如何获得母版页控件的值

有一个网友在问: 为了子页能访问到MasterPage母版页的控件,使用接口: 母版页实作这个接口 在子页的铵钮事件: 演示一下: 子页面如何获得母版页控件的值

WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e){        Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue));    //当然也可以用匿名委托写成

IsMdicontainer新窗体被父容器包括的设置、Timer控件

IsMdicontainer的设置 这是对于整个窗体的设置,将一个窗体的IsMdicontainer设置为true之后,再打开新窗体便可以让新窗体被父容器包括在内. 操作方法: 1)先建立一个子窗体Child.cs 2)在父容器的按钮里写代码,打开子窗体 Child c = new Child(); //判断窗体是否已经打开,以控制其只能打开一个 int count = 0; foreach (Form f in this.MdiChildren) { if (f.Name == c.Name)

WinForm用户自定义控件,在主窗体加载时出现闪烁;调用用户控件出现闪烁,需要鼠标才能够显示

转载自:http://www.dotblogs.com.tw/rainmaker/archive/2012/02/22/69811.aspx 解决方案: 在调用用户控件的窗体里面添加一下代码: protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp

刷新当前条记录(针对画面某控件修改而引起的当前条数据刷新)

最近碰到一个问题,需要一个控件modified之后,给另外几个字段赋值, 但是碰到问题了,要么就是必须光标离开该控件之后,别的字段值才会变化: 要么就是整个画面重新加载,数据光标重新选中在第一条数据上. 针对以上问题,我查看了系统的采购订单过账入库之后,采购订单头状态更新的代码. 代码在  purchFormletter \ mainonserver    方法中,有如下方法, PurchFormLetter::updateCallerDataSource(purchTable_ds, reco

winform 批量控件取值赋值

以前写winform 最多写几个文本框,最近需要入录一个人员信息,那好几十个字段,一下子干蒙了,这要是一个个取值赋值都写到明天了,于是就自己写了个方法,也不是什么高大上的,就是很简单很普通很low的方法. 废话少说上代码,注意,这块我就用了个文本框,你也可以找到所有控件,尽量控件name与实体字段一样. public Dictionary<string, object> GetRS_InfoVue() { var dic = new Dictionary<string, object&g

PullToRefreshGridView 带下拉刷新,上拉加载的GridView控件

下载地址:https://github.com/chrisbanes/Android-PullToRefresh 下载解压后,导入解压包中的extras项目 xml: <span style="font-size:18px;"><com.handmark.pulltorefresh.library.PullToRefreshGridView android:id="@+id/gvList" android:layout_width="ma