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

C# WinForm 父窗体 子窗体 传值的更多相关文章

  1. winform panel显示子窗体

    private void ZiChuangTi() {//确认当前为子窗体 this.IsMdiContainer = true; //建立个子窗体的对象 Son mySon = new Son(); ...

  2. C# Winform 防止MDI子窗体重复打开

    可以在MDI主窗体中添加以下方法. //防止打开多个窗体 private bool ShowChildrenForm(string p_ChildrenFormText) { int i; //依次检 ...

  3. 解决winform中mdi子窗体加载时显示最大化最小化按钮的方法

    场景:在mid加载子窗体的时候如果指定WindowState为Maximized,加载完成后主窗体会显示最大化.最小化.关闭的按钮图标. 解决方法: 1.更改主窗体FormMain的属性.制定Main ...

  4. showModalDialog-父窗体子窗体

    showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口. farther.html --------------------------- ...

  5. c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现

    主窗体:  子窗体: 把子窗体嵌入到主窗体的panel 右侧中: 代码: { public MainForm() { InitializeComponent(); } private void Clo ...

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

    第一种方法: 用委托,Form2和Form3是同一组 Form2 C#代码 using System; using System.Collections.Generic; using System.C ...

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

    转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2  using System; using Sys ...

  8. C#键盘事件处理父窗体子窗体

    :                             :                             MessageBox.Show(, , Keys.F1);            ...

  9. layui使用 ——父,子页面传值

    页面传值是非常常用的,layui自带弹窗功能,但是内置使用的是location.href 暂时没找到方法条件请求头,所以在后台需要放开拦截器, layer.open({ type : 2, title ...

随机推荐

  1. 理解javascript函数调用和“this”

    http://blog.csdn.net/littlechang/article/details/8180550

  2. M451例程讲解之GPIO.H

    到了CORTEX-M4,几乎每一快都有很大的知识量,单单GPIO库文件这一项就有很长的章节要描述,加油吧 GPIO.h.是最基础的一个库文件,下面结合数据手册来一一进行讲解: 先把库文件粘上,方便一一 ...

  3. 详说 CSS 清除浮动

    转自:http://kayosite.com/remove-floating-style-in-detail.html 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生 ...

  4. Java操作文件转码

    package downloadTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.F ...

  5. linux 配置svn服务器+使用+注意事项

    本文以ubuntu系统进行安装. 1.安装svn服务器 apt-get install subversion 输入 y 回车确认安装. 安装完毕后可以用 下边的命令查看是否安装完成,如果现实出版本号和 ...

  6. Web浏览器导出FTP服务器上的文件

    开发思路:1.代码登录ftp服务器下载文件到服务器2.通过web浏览器下载服务器上的文件 using System; using System.Collections; using System.Co ...

  7. 2017 Multi-University Training Contest - Team 8

    HDU6140 Hybrid Crystals 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6140 题目意思:这场多校是真的坑,题目爆长,心态爆炸, ...

  8. PHP之冒号、endif、endwhile、endfor 是什么鬼?f

    解释:其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的替代语法. 冒号(:)相当于是 左大括号---->{ endif.endwhile.endfor.endforeach- ...

  9. closure--- 闭包与并行运算

      闭包有效的减少了函数所需定义的参数数目.这对于并行运算来说有重要的意义.在并行运算的环境下,我们可以让每台电脑负责一个函数,然后将一台电脑的输出和下一台电脑的输入串联起来.最终,我们像流水线一样工 ...

  10. C++应该被看成是个语言集合——四种语言(C语言,OO语言,泛型语言,STL)

    至少有三种语言: 一,C++ is C 二,C++ is an OO language 三,C++ is a genetic programming language 有的童鞋觉得难,可能是没有看清楚 ...