Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# - Fatal编程技术网

C# 如何通过名称将现有表单动态添加到集合中

C# 如何通过名称将现有表单动态添加到集合中,c#,C#,我正在尝试将一些现有表单动态添加到集合中 下面的代码将遍历程序集并找到任何表单(希望我没有弄错)。如果表单与表单名称的一部分匹配,我想将其添加到集合中。一、 当然,您可以在CodeByForms.add(新frm_Form1)中显式地执行此操作。我想这样做,这样我就不会忘记添加一个表单(我想我有点懒) List Forms=new List(); 私有void addForms() { Assembly[]assemblies=AppDomain.CurrentDomain.GetAssembl

我正在尝试将一些现有表单动态添加到集合中

下面的代码将遍历程序集并找到任何表单(希望我没有弄错)。如果表单与表单名称的一部分匹配,我想将其添加到集合中。一、 当然,您可以在CodeByForms.add(新frm_Form1)中显式地执行此操作。我想这样做,这样我就不会忘记添加一个表单(我想我有点懒)

List Forms=new List();
私有void addForms()
{
Assembly[]assemblies=AppDomain.CurrentDomain.GetAssemblies();
foreach(部件中的部件a)
{
Type[]types=a.GetTypes();
foreach(类型中的类型t)
{
if(t.BaseType==typeof(Form))
{
if(t.Name.Substring(0,4).ToLower()=“frm_u2;”)
{
//如何将表单(在for循环中找到)添加到表单集合。
}
}
}
}
}
希望你能帮忙


谢谢

在你的循环中,你是在寻找类型,而不是实例。当您找到一个实例,并且这是您的目标时,您可以使用来创建类型的实例,然后将其添加到集合中。是激活器使用的一个示例

Form instance = (Form)Activator.CreateInstance(t);
Forms.Add(instance);

例如,您可能有该表单的多个实例
Form instance = (Form)Activator.CreateInstance(t);
Forms.Add(instance);