【问题标题】:How to get the list of forms in VS2008 C# project?VS2008 C#项目中如何获取表单列表?
【发布时间】:2012-02-15 21:23:20
【问题描述】:

我想获取我正在运行的项目中的所有表单的列表。

假设我正在运行一个有 4 个表单的项目 1.Form1 2.Form2 3.Form3 4.Form4

我想检索它们的列表以进一步了解要指向的表单

【问题讨论】:

  • 您想在设计时或运行时检索它们?
  • Runtime :) 知道 Application.Openforms 的集合,但如果我的表单没有打开,那么我如何获得整个集合的列表

标签: c# winforms


【解决方案1】:

你的意思是:

  1. 设计时?
  2. 运行时?

如果是运行时,你的意思是:

  1. 项目中定义的所有表单?
  2. 所有打开的表格

如果在设计时,那我不知道。

如果您的意思是在运行时,并且希望声明所有表单,则需要求助于反射。遍历您的程序集(/ies) 中的所有类型,并找到从Form 类继承的所有类型。

这样的事情会做:

Type formType = typeof(Form);
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
   if (formType.IsAssignableFrom(type))
   {
       // type is a Form
   }

如果您的意思是在运行时,并且想要所有打开的表单,您可以使用Application.OpenForms

【讨论】:

  • 是的,我想我想要那个。但是如果你愿意的话,我在哪里可以得到满足“如果”条件的表单的对象
  • 你是说最后一种情况吗?你不能,这就是重点,要么你想要活的、现有的、表单对象,要么你想要所有可能的类型,这些类型可能存在也可能不存在。如果您想要两者,则需要将两者结合起来。你能详细说明你想要什么吗?并且“是的,我想我想要那个”,当我列出了很多东西并不能帮助我帮助你时,所以说 what 你想要。
  • 好的,那么我会说我想要运行时的表单对象列表和项目中定义的所有表单希望这可以帮助您理解我的查询,是的,我明白这不是一个正确的方法告诉我的意图 lolz
  • 那么具体是什么,因为我的回答似乎没有回答你的问题。也就是说,我认为它没有,因为你一直在评论。所有运行时表单都是 Application.OpenForms,链接在我的答案底部。项目中定义的所有表单都是我发布的代码。两者都不做你想做的事?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多