从form2上的另一个文本框中的form1上的一个文本框中获取数据

时间:2014-01-01 14:57:28

标签: c# winforms

我有两种形式form1和form2。我想在form1上单击一个按钮时从form2的文本框中获取文本。我在form1上使用:

private void but_Click(object sender, EventArgs e)
{
    Form2 f2=new Form2();
    txtonform1=f2.fo;
}

并在form2上我有这个方法从文本框中返回文本:

public string fo
{            
    get { return textBox1.Text; }
    set { textBox1.Text = value; }
}

现在的问题是它返回null。是什么问题我是新来的c#可以请任何人帮助我!

4 个答案:

答案 0 :(得分:1)

您必须使用一个表单,否则每次都创建新实例:

Form2 f2 = new Form2();

private void but1_Click(object sender, EventArgs e)
{
    f2.fo=txtonform1.Text;
}

private void but2_Click(object sender, EventArgs e)
{
    MessageBox.Show(f2.fo);
}

答案 1 :(得分:0)

您正在此处创建新的表单实例:

 Form2 f2=new Form2();

并且您的fo属性返回此新表单的textBox1,因此textBox1不包含任何文本,并且您将获得null。

我猜你正在从Form1显示form2,如果它是正确的,只需在类级别定义一个Form2 intance:

public partial class Form1 : Form
{
   Form2 f2 = new Form2();
}

当你想要展示时,请使用:

f2.Show(this);

如果您想立即更改TextBox值,可以使用:

txtonform1.Text = f2.fo;

但要做到这一点,请确保在form2中更改textBox1.Text。

答案 2 :(得分:0)

您应该在form2中保留已显示的form1的引用,然后使用相同的变量来访问该值。

我不知道form2是如何创建和显示的,但假设它已创建并通过某个按钮显示,请点击form1然后form1类看起来像,

private Form f2 = null;   

private void buttonShowForm2_Click(object sender, EventArgs e)
{
    if(f2 == null)
        f2 = new form2();
    f2.Show();
}

private void but_Click(object sender, EventArgs e)
{
    if(f2 == null)  //If this form was not already displayed display it to get the input from user
       buttonShowForm2_Click(null, null);
    else
       txtonform1=f2.fo;
}

答案 3 :(得分:0)

第一个解决方案:

  

1。)转到Form2然后双击它。在代码类型中。

public Form2(string sTEXT)
{
InitializeComponent();
textBox1.Text = sTEXT;
}

2.) Goto Form1 then Double click it. At the code type this.
//At your command button in Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 sForm = new Form2(textBox1.Text);
sForm.Show();
}

第二个解决方案:

  

1。)转到Form1然后双击它。在代码类型中。

public string CaptionText
{
get {return textBox1.Text;}
set { textBox1.Text = value;}
} 

注意:textbox1.text = sayre;

的值

2。)转到Form2然后双击它。在代码类型中。

// At your command button In Form2
private void button1_Click(object sender, EventArgs e)
{
Form1 sForm1 = new Form1();
textBox1.Text = sForm1.CaptionText;
}