计划: 我想要用第二个Form2的用户输入一些文本。 当这个Form2关闭时,我想在Form1上的文本框中显示输入文本...
在按钮事件上,在Form2上,我可以访问Form1的文本框:
Form1 form1 = new Form1();
和
form1.myText = "Test Name";
然后我关闭Form2:
this.Close();
但价值"测试名称"没有出现在form1的文本框中...... 我没有收到错误。
答案 0 :(得分:3)
当您致电new Form1()
时,会创建Form1
的新实例。您有两个Form1
对象。这就是为什么你的代码不起作用的原因。
如果您想加快速度,请将Form1
作为变量添加到Form2
类。
public Form1 form1;
然后您可以在显示Form2
之前设置它。
Form2 form2 = new Form2();
form2.form1 = this;
form2.Show();
请务必删除此部分:Form1 form1 = new Form1();
。
现在你的代码应该可行了。
答案 1 :(得分:0)
在Form2上创建事件处理程序,并在此事件中从Form1挂起打开Form2。在form2中使用您自己的eventargs触发此事件,其中包含您需要在Form1中显示的文本。
另一个解决方案是Action。在Form2中创建属性Action并在打开时Form2设置此操作。当Form2关闭时,触发此操作,如_action.Invoke(textWhichUneed);
答案 2 :(得分:-1)
您应该在关闭前进行赋值。例如
form1.myText = "Test Name";
this.Close();
同样不应该创建form1,而是传递。你如何将form1传递给form2?