zoukankan      html  css  js  c++  java
  • C#Winform 父窗体 子窗体 传值

    本篇博客转载:http://www.cnblogs.com/freeliver54/archive/2009/02/11/1388173.html

    本次示例效果如下:
    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();
            }
        }

  • 相关阅读:
    【转】了解 Boost Filesystem Library
    [转]敏捷软件开发模型SCRUM
    【转】惠普前总裁孙振耀指点职业规划
    新年随想
    C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
    一个简单的QQ客服功能
    特殊符号如(▲)导到EXCEL中产生乱码
    SINA 和腾讯网易微博的OAUTH的DEMO
    分享功能
    发布时选着勾选use fixed naming and single page assemblies 的作用
  • 原文地址:https://www.cnblogs.com/H2921306656/p/6371444.html
Copyright © 2011-2022 走看看