Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取应用程序第一次运行表单_C#_Winforms_Reflection - Fatal编程技术网

C# 获取应用程序第一次运行表单

C# 获取应用程序第一次运行表单,c#,winforms,reflection,C#,Winforms,Reflection,我在一个项目中有两种形式。 当我的应用程序运行时,Form1打开。之后,我将打开Form2 如何使用反射从Form2访问Form1 创建第二个表单时,只需传入对第一个表单的引用: // I assume it's code within Form1 which opens Form2 Form2 form2 = new Form2(this); form2.Show(); 这是假设您愿意添加一个带有Form2作为参数的构造函数。或者,将其作为表单2中的属性: Form2 form2 = new

我在一个项目中有两种形式。 当我的应用程序运行时,
Form1
打开。之后,我将打开
Form2


如何使用反射从
Form2
访问
Form1

创建第二个表单时,只需传入对第一个表单的引用:

// I assume it's code within Form1 which opens Form2
Form2 form2 = new Form2(this);
form2.Show();
这是假设您愿意添加一个带有
Form2
作为参数的构造函数。或者,将其作为
表单2中的属性:

Form2 form2 = new Form2 { Form1 = this };
form2.Show();

为什么要使用反射来实现此目的

创建第二个表单时,只需传入对第一个表单的引用:

// I assume it's code within Form1 which opens Form2
Form2 form2 = new Form2(this);
form2.Show();
这是假设您愿意添加一个带有
Form2
作为参数的构造函数。或者,将其作为
表单2中的属性:

Form2 form2 = new Form2 { Form1 = this };
form2.Show();

如果只打开form2的一个实例,您也可以这样做:
form2f2=Application.OpenForms[“form2”]

如果只打开form2的一个实例,也可以这样做:
form2 f2=Application.OpenForms[“form2”]

还有其他方法可以使用reflection@JuniorSK:您能解释一下为什么要使用反射吗?在这种情况下完全没有必要。我创建了一个组件。我必须访问组件containerform,然后我必须访问project first runn表单,以查找其中一个components@JuniorSK:老实说,这并没有给我们提供更多有用的信息。当然,这并不构成使用反射的理由。有没有其他方法可以使用反射呢reflection@JuniorSK:您能解释一下为什么要使用反射吗?在这种情况下完全没有必要。我创建了一个组件。我必须访问组件containerform,然后我必须访问project first runn表单,以查找其中一个components@JuniorSK:老实说,这并没有给我们提供更多有用的信息。当然,这并不是使用反射的理由。请使用@JonSkeet方法。否则,这里的反射是如何实现的:。正如@MarcGravel所解释的:“如果您想要一个打开表单的列表,那就是
应用程序.OpenForms
。您可以使用GetType()并检查.Assembly来从不同的程序集中查找这些表单。除此之外,我还不完全清楚这个问题……”。祝你好运使用@JonSkeet方法。否则,这里的反射是如何实现的:。正如@MarcGravel所解释的:“如果您想要一个打开表单的列表,那就是
应用程序.OpenForms
。您可以使用GetType()并检查.Assembly来从不同的程序集中查找这些表单。除此之外,我还不完全清楚这个问题……”。祝你好运