C# 如何获取我的申请表列表

C# 如何获取我的申请表列表,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我怎样才能得到我所有的申请表,实际上我不希望像下面这样打开表格 Application.OpenForms 但是,我需要所有的表单名称,例如在ComboBox中 下面是一些代码,用于枚举解决方案命名空间中所有类型(类)的列表,您应该能够从中筛选出表单列表: using System.Reflection; private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.G

我怎样才能得到我所有的申请表,实际上我不希望像下面这样打开表格

Application.OpenForms

但是,我需要所有的表单名称,例如在ComboBox中

下面是一些代码,用于枚举解决方案命名空间中所有类型(类)的列表,您应该能够从中筛选出表单列表:

using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
    return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
}
用法:

Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "YourNamespaceHere");
for (int i = 0; i < typelist.Length; i++)
{
    if (typelist[i].IsSubclassOf(typeof(Form))) {
           Console.WriteLine(typelist[i].Name); // Only forms will be written here
    }
}
Type[]typelist=GetTypesInNamespace(Assembly.getExecutionGassembly(),“YourNamespaceHere”);
for(int i=0;i

类型列表
数组后面。这将包含所有解决方案的类型,您可以从中获得表单。

这个问题没有什么意义。要获取表单派生类的Name属性,首先必须创建它的实例。当您这样做时,该表单将成为OpenForms集合的成员。你说你不想使用它,出于神秘的原因,你唯一能做的另一件事就是检索表单的类型名。迭代Assembly.GetTypes()。我使用“System.Windows.Forms”和“Form”也使用“Forms”,但没有人为其工作me@franchescototti:我编辑了我的答案,向您展示了如何仅从列表中获取表单。它可以工作,但只检索根目录中存在的表单,实际上我在Folder1、Folder2中还有其他表单,这段代码无法检索它们@C-Pound GuruCheck表单的名称空间。如果不同(包括文件夹名),则需要对每个名称空间执行多个调用。