[英]How do I dynamically add an existing form to a collection by its name
我正在尝试将一些现有表单动态添加到集合中。
下面的代码将遍历程序集并找到任何形式(希望我做对了)。 如果表单与表单名称的一部分匹配,我想将其添加到集合中。 当然,我可以通过 Forms.add(new frm_Form1) 在代码中明确地做到这一点。 我想这样做,所以我不会忘记添加一个表单(我想我有点懒惰)。
List<Form> Forms = new List<Form>();
private void addForms()
{
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly a in assemblies)
{
Type[] types = a.GetTypes();
foreach (Type t in types)
{
if (t.BaseType == typeof(Form))
{
if (t.Name.Substring(0, 4).ToLower() == "frm_")
{
// How to add the form (found in the for loop) to the Forms collection.
}
}
}
}
}
希望你能帮忙。
谢谢
在您的循环中,您正在寻找类型 - 而不是实例。 当您找到一个并且这是您的目标时,您可以使用Activator.CreateInstance()创建您类型的实例,然后将其添加到您的集合中。 这是 Activator 用法的示例。
Form instance = (Form)Activator.CreateInstance(t);
Forms.Add(instance);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.