2017-03-04 59 views
0

我的问题是: 主窗体首先打开,有一个按钮打开子窗体。我使用的构造,我想从孩子形式的字符串返回主窗体的文本框,现在我的代码是:如何从子窗体返回一个字符串到主窗体(不打开任何新窗体)?

Form1 f = new Form1(txt1.Text); 
f.Show(); 

但是,一个新的主要形式将打开,该字符串不会在填第一主要形式。 那么如何使用只有一个主要的形式?

+0

你的问题不是很清楚,我不知道你想做什么。单击按钮时应该发生什么,以及该字符串何时应该填充在主窗体上? – smead

+0

对不起,我仍然困惑。你说你想要2种形式,但是你不想打开一个表格?这些似乎是相反的事情。对不起,但我不明白你在问什么。 – smead

+0

由于Form1已经打开,我想从Form2直接添加一个字符串到该Form1,而不是打开一个新窗体并将字符串添加到它 – Nlive

回答

0

你可以做到这一点,通过OpenForms得到它:

Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault(); 

请务必在其修改财产申报你的控制TXT1为公有的,因此你可以从孩子的形式访问:

 Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault(); 
     frm.txt1.Text = "Change"; 
     frm.Show(); 

现在如果你想通过它的构造函数改变它,我怀疑你可以做它,因为它已经被初始化了,除非你调用另一个新的Form1来初始化它,并且会再次通过它的构造函数。

你可以做的是直接改变其属性:

 Form1 frm = Application.OpenForms.OfType<Form1>().FirstOrDefault(); 
     frm.stringMain = "Foo"; //Your property you want to change 
     frm.txt1.Text = "Change"; 
     frm.Show(); 
+0

还是不明白你的代码。我已经将Form1中的标签的属性从私有公共设置为公共,所以现在我可以拥有这个: **'frm.mylabel.Text = MyString; '** – Nlive

+0

是的。你遇到什么错误? @Nlive –

+0

你真的想通过构造函数传递值吗?那么你不能在Form1上访问它,因为它已经打开了,除非你想打开一个新的Form1?让我知道,以便我可以编辑我的代码。 @Nlive –

相关问题