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

时间:2012-04-14 22:59:18

标签: c# .net winforms visual-studio-2010

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

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

}

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

enter image description here

我要做的是向用户提供此表单,以便将必要的数据输入到表单中,然后单击“保存设置”按钮。在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();


}

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

MiddleForm mf = new MiddleForm();

MessageBox.Show(mf.textBox1.Text); // to see whether there is something 

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

enter image description here

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

有什么帮助让这个工作?

5 个答案:

答案 0 :(得分:5)

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

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

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

    ...
}

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

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

答案 1 :(得分:3)

你需要这样做:

var form = Form.ActiveForm as Form3;
String myText = form.txtBoxName.Text;

答案 2 :(得分:3)

您应该创建一个公共字段,提供您想要从表单中获取的值。如果你去Form1的源代码,你应该添加如下内容:

public string TextValue1 {
    get {return TextBox1.Text;}
}

现在,您可以使用Form1.TextBox1从文本框中检索字符串值。

答案 3 :(得分:3)

您可以尝试使用ShowDialog它将Form创建为模型对话框,然后您可以检查DialogResult以了解数据是否已保存或{{1}被取消了。

Form

<强> Form3

private void button2_Click(object sender, EventArgs e)
{
    Form3 frm = new Form3();
    if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        savedSettings = frm.getTextBoxValues();
    }
}

答案 4 :(得分:3)

Form3中创建公共属性

public string[] Keys
{
    get
    {
        return new string[] { tbKey1.Text, tbKey2.Text, tbKey3.Text,
                              tbKey4.Text, tbKey5.Text};
    }
}

public string Link { get { return tbLink.Text; } }

Form1您可以像这样访问这些属性

Form3 frm = new Form3();
if (frm.ShowDialog() == DialogResult.OK) {
    string[] keys = frm.Keys; 
    string link = frm.Link; 
}

注意:使用ShowDialog而非Show非常重要,因为Show不会等待其他表单关闭。此外,在Form3中单击“保存设置”时,请设置对话框结果

DialogResult = DialogResult.OK;
Close();

以便您可以在Form1中查看,如上所示。