【问题标题】:Get Application first run Form获取应用程序首次运行表单
【发布时间】:2012-07-07 09:44:59
【问题描述】:

我在一个项目中有两个表单。 当我的应用程序运行时,Form1 被打开。之后我打开Form2

如何通过反射从Form2 访问Form1

【问题讨论】:

  • 使用@JonSkeet 方法。否则,您可以通过以下方式进行反思:stackoverflow.com/a/388872/495455。正如@MarcGravell 解释的那样:“如果你想要一个打开表单的列表,那就是Application.OpenForms。你可以迭代这个,使用 GetType() 并检查 .Assembly 以从不同的程序集中找到它们。除此之外,我'我对这个问题并不完全清楚......”。祝你好运!

标签: c# winforms reflection


【解决方案1】:

为什么要为此使用反射?

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

// I assume it's code within Form1 which opens Form2
Form2 form2 = new Form2(this);
form2.Show();

假设您很乐意添加带有Form2 作为参数的构造函数。或者,将其设为Form2 中的属性:

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

【讨论】:

  • 有没有其他方法可以通过反射来实现
  • @JuniorSK:你能解释一下为什么你打算使用反射吗?在这种情况下完全没有必要。
  • 我创建了一个组件。我必须访问组件容器表单,然后我必须访问项目第一次运行的表单以查找其中一个组件
  • @JuniorSK:老实说,这并没有给我们提供更多有用的信息。当然,它没有理由使用反射。
【解决方案2】:

如果您只打开一个 form2 实例,您也可以这样做:Form2 f2 = Application.OpenForms["Form2"];

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多