从c#中的子窗口访问父窗口中的控件

时间:2010-11-11 23:03:46

标签: c# controls window parent

我有一个主“父”窗口,其中包含一个按钮和一个文本框。 我有另一个窗口“子”窗口,当我在文本框中输入一些文本并单击主窗口上的按钮时会触发该窗口。现在子窗口包含另一个文本框和一个按钮。我需要做的是在子窗口的文本框中输入一些文本,然后当我点击子窗口上的按钮时,父窗口上的文本框应该使用我从子窗口输入的文本进行更新。 这是样本:

Form1.cs的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace childform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 tempDialog = new Form2(this);
            tempDialog.ShowDialog();
        }

        public void getText(string text)
        {
            textbox1.Text = text;
        }

    }
}

Form2.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace childform
{
    public partial class Form2 : Form
    {
        private Form1 m_parent;

        public Form2(Form1 frm1)
        {
            InitializeComponent();
            m_parent = frm1;
        }

        private void button1_Click(object sender, EventArgs e)
        { 
            m_parent.getText(textbox1.text);
        }
    }
}

知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

1)在Form2(孩子一): 添加一个属性以获取在TextBox中写入的文本:

Public string TheText
{
     get { return textbox1.Text; }
}

并将按钮DialogResult属性设置为Ok,以便用户在关闭表单时按OK,而不是关闭按钮。

2)在Form1(父母)中: 检查用户是否按下了Ok按钮,添加从Form2中的属性theText中获取值。

private void button1_Click(object sender, EventArgs e)
{
   Form2 tempDialog = new Form2();
   if (tempDialog.ShowDialog() == DialogResult.Ok)
      textbox1.Text = tempDialog.TheText;
}
祝你好运!