• C# WinForm 父窗体 子窗体 传值


    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++参考书籍
    安装驱动踩坑
    杂项讨论
    《机器学习篇》目录
    《计算机技术》目录
    数学:统计:参数估计
    神经网络
    数学:统计:数据的概括性度量
    数学:概率:一维随机变量
    多维随机变量:相互独立的随机变量
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/5149697.html
Copyright © 2020-2023  润新知