111,126
社区成员
发帖
与我相关
我的任务
分享
//我下面的sdo就是一个DataRow,绑定TreeView的时候把DataRow给了Node.Tag
PurviewModule pmode = new PurviewModule();
pmode.FormName = sdo.Field<String>("FormName");//窗体名称
pmode.Procedures = sdo.Field<String>("Procedures");//这个读出来的都是Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Type type = pmode.ModuleType;//得到了当前双击窗体的类型
你的窗体类型 form = Activator.CreateInstance(type) as 你的窗体类型;//这样子实例化了你想怎么操作都行
public class PurviewModule
{
public String FormName = String.Empty;//你程序集里窗体的名称
public String Procedures = String.Empty;//你上面的这个Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089东西,我这两个都是存在数据库的,然后构造成tree,再打开
Type moduleType;
public Type ModuleType
{
get
{
if (moduleType == null)
{
try
{
moduleType = Assembly.GetType(FormName, false, true);
if (moduleType == null)
{
Assembly[] ass = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly var in ass)
{
moduleType = var.GetType(FormName, false);
if (moduleType != null)
break;
}
}
}
catch
{
}
}
return moduleType;
}
set { moduleType = value; }
}
Assembly assembly;
public Assembly Assembly
{
get
{
if (assembly == null)
{
try
{
assembly = AppDomain.CurrentDomain.Load(Procedures);
}
catch
{
}
}
return assembly;
}
set { assembly = value; }
}
}