2013-05-09 140 views
0

我一直在为这个项目工作了大约一个小时,现在我被卡住了。我有4份表格,但只有最后3份是相关的。在表格2我用:在表单之间传递信息

this.Visible = false; 
    Form3 Form3 = new Form3(); 
    Form3.Show(); 

要创建和显示形式3. Form3也得到了一个文本框,里面是空的,我想这些信息传送到在Form4的标签。在表格3我用同样的鳕鱼,如表2,使表3

我试了几件事情,并搜查了论坛,但似乎没有任何工作...

 lblN2.Text = Form3.txtf.Text; 

我希望将用户在Form3中的文本框(txtf)中写入的文本转换为Form4中的空标签(lblN2)。

帮助,将不胜感激!

+0

什么是你想完成(发送2到3的值或什么?)? – progrrammer 2013-05-09 18:23:23

+1

您在这里没有非常明确的问题。 – tnw 2013-05-09 18:23:42

+0

您的声明中似乎缺少Form4:lblN2.Text = Form3.txtf.Text; – 2013-05-09 18:30:00

回答

1

尝试是这样的(代码Form3类):

Form4 frm4 = new Form4(); 
    frm4.lblN2.Text = this.txtf.Text; 
frm4.Show(); 

替代方法是修改构造方法在Form4接受字符串参数并调用它,如下所示:

Form4 frm4 = new Form4(this.txtf.Text); 
    frm4.Show(); 
+0

感谢队友,工作很棒! :) – user2367396 2013-05-09 18:38:48

0

如果你想转让的东西form4,那么你可以创建form4公共变量,那么你可以做这样的事情上form3:

this.hide(); 
form4 form4 = new form4(); 
form4.variable = textbox1.text; 
form4.show(); 

然后form4_load您可以:

textbox2.text = variable; 
+0

我不确定“公共”数据是最好的选择。一般来说,至少据我所知,你最好有一个公开数据的好理由。考虑到还有其他解决方案,在表单之间传递数据可能不够好。 – ChiefTwoPencils 2014-06-12 20:21:30

1

根据您的信息,我认为您希望将form2的值发送到form3,您可以修改构造函数(作为解决方案)以将form2值发送到form3。这是一个示例。

对于表单2:

this.Visible = false; 
Form3 frm = new Form3(value-you-want-to-send); 
frm.Show(); 

在Form3你应该有构造服用参数从窗体2 AS获得价值:

public void Form3(value-you-want-to-receive) 
{ 
    //set the label text to the string received 
} 
0

在表3 ...

private void button1_Click(object sender, EventArgs e) 
    { 
     Form4 frm = new Form4(textBox1.Text); 
     frm.Show(); 
    } 

表格4 ...

public partial class Form4 : Form 
{ 
    private string _valueFromOtherForm; 
    public Form4() 
    { 
     InitializeComponent(); 
    } 

    public Form4(string valuePassed) 
    { 
     InitializeComponent(); 
     _valueFromOtherForm = valuePassed; 
    } 

    private void Form4_Load(object sender, EventArgs e) 
    { 
     label1.Text = _valueFromOtherForm; 
    } 
} 

}

0

Form4,写一个方法,如:

public void ReceiveTextFromAnotherForm(string theText) 
{ 
    //set the label text to the string received 
} 

Form3,这样做:

Form4 theForm4 = new Form4(); 
theForm4.ReceiveTextFromAnotherForm(this.txtf.Text); 
theForm4.Show(); 
1

你或许应该在你的语句中指定Form4,如:

Form4 _frm4 = new Form4(); 
_frm4.lblN2.Text = Form3.txtf.Text 
+0

我现在得到的错误是:非静态字段,方法或属性需要对象引用。对于Form3。 – user2367396 2013-05-09 18:34:38

+1

您必须以创建Form3相同的方式创建Form4对象,即:Form4 _frm4 = new Form4(); – 2013-05-09 18:38:30