如何从Form 1访问Form3中的文本框?

Raf*_*ari 1 .net c# visual-studio-2010 winforms

在(Form1)中我有一个设置按钮,当我点击它时,会显示一个新的表单(Form2),使用以下代码行:

private void b7_Click(object sender, EventArgs e)
{
    Form3 frm = new Form3();
    frm.Show();

}
Run Code Online (Sandbox Code Playgroud)

在form3中,我有6个文本框和两个按钮,保存和取消.

在此输入图像描述

我要做的是向用户提供此表单,以便将必要的数据键入表单,然后单击"保存设置"按钮.在Form1中,我想访问这些文本框以获取其当前值(当用户单击保存设置时).我试图添加一个Form4并命名它(MiddleForm),我添加了6个文本框,并在Form3(上图中的表单)我写了这些行:

private void button2_Click(object sender, EventArgs e)
{
    MiddleForm mf = new MiddleForm();
    mf.textBox1.Text = keywrd1.Text;
    mf.textBox2.Text = keywrd2.Text;
    mf.textBox3.Text = keywrd3.Text;
    mf.textBox4.Text = keywrd4.Text;
    mf.textBox5.Text = keywrd5.Text;

    mf.textBox1.Text = thelink.Text;

    Close();


}
Run Code Online (Sandbox Code Playgroud)

然后我试图从Form1(我需要使用文本框值的形式)访问传递给MiddleForm的值,在Form1中,我写了这些行(仅用于调试目的)

MiddleForm mf = new MiddleForm();

MessageBox.Show(mf.textBox1.Text); // to see whether there is something 
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有任何东西传递给mf.TextBox1

在此输入图像描述

如何从Form1调用Form3的当前值(使用保存设置保存按钮保存),以便在其余代码中使用它们.

有什么帮助让这个工作?

Mac*_*iej 5

在Form3中创建6个公共属性:

public partial class Form3 : Form
{
    public string Value1
    {
        get { return this.keywrd1.Text; }
    }

    public string Value2
    {
        get { return this.keywrd2.Text; }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

Form3关闭后(但在处置之前),您可以通过属性访问文本值.正如另一个答案所指出的那样,使用ShowDialog代替Show,并在它自己的代码中关闭Form3.

private void b7_Click(object sender, EventArgs e)
{
    Form3 frm = new Form3();
    frm.ShowDialog();
    string value1 = frm.Value1;
    ...
}
Run Code Online (Sandbox Code Playgroud)