C# 将Form2变量获取为Form1(文本框中的用户文本输入)

C# 将Form2变量获取为Form1(文本框中的用户文本输入),c#,.net,winforms,visual-studio,C#,.net,Winforms,Visual Studio,该计划: 我想让第二个Form2的用户输入一些文本。 当这个Form2关闭时,我想在Form1上的文本框中显示输入文本 在按钮事件中,在Form2上,我可以访问Form1的文本框: Form1 form1 = new Form1(); 以及: 然后我关闭Form2: this.Close(); 但是值“Test Name”没有出现在form1的文本框中。。。 我没有收到错误。您应该在关闭前进行赋值。比如说 form1.myText = "Test Name"; this.Close();

该计划: 我想让第二个Form2的用户输入一些文本。 当这个Form2关闭时,我想在Form1上的文本框中显示输入文本

在按钮事件中,在Form2上,我可以访问Form1的文本框:

Form1 form1 = new Form1();
以及:

然后我关闭Form2:

this.Close();
但是值“Test Name”没有出现在form1的文本框中。。。
我没有收到错误。

您应该在关闭前进行赋值。比如说

form1.myText = "Test Name";
this.Close();

此外,不应创建form1,而应传递它。如何将form1传递到form2?

在form2上创建事件处理程序,以及何时在此事件上从form1挂钩打开form2。在form2中,使用您自己的eventargs触发此事件,其中包含您需要在Form1中显示的文本


另一个解决办法是行动。在Form2中创建属性操作,并在打开Form2时设置此操作。当Form2关闭时,启动此操作,如
\u action.Invoke(textwichued)

当调用
newform1()
时,将创建
Form1
的新实例。您有两个
Form1
对象。这就是你的代码不起作用的原因

如果您想加快速度,请将
Form1
作为变量添加到
Form2
类中

public Form1 form1;
然后,您可以在显示
Form2
之前设置它

Form2 form2 = new Form2();
form2.form1 = this;
form2.Show();
请记住删除此部分:
Form1 Form1=new Form1()


现在您的代码应该可以工作了

这就是我所做和描述的:-)你是如何访问form1的?你能说或给出一个好的链接如何传递它吗?我创造了一个新的,这就产生了一个永恒的问题。添加
form1.Show()你不能通过反复试验来学习面向对象编程。用一本书或一个类来学习基础知识。@HansPassant假设他说了,但“测试名称”的值没有出现在form1的文本框中,我想表单确实出现了。否则,您可能是对的,那么您不应该创建一个新的@迪翁。好的,我这样做是为了访问form1中的文本框,但我想这不是正确的方法。。。感谢you@HansPassant“你不能通过反复试验来学习面向对象编程。用一本书或一门课来学习基础知识”哇!好的,在一个新的解决方案上进行了测试。现在我将尝试在现有的基础上实现它。。。谢谢,当然可以。启动应用程序时,Form1已创建。Form2不知道Form1的存在。这就是我设置
form2.form1=this
的原因<代码>此
表示创建的表格1。
Form2 form2 = new Form2();
form2.form1 = this;
form2.Show();