利用反射动态(运行时)加载窗体
2010-06-17 09:48
375 查看
文件名,窗体名,参数
private int Run_WinForm(string filename, string myfrmname, DataTable mydtmsg)
{
Assembly vAssembly = null;
if (string.IsNullOrEmpty(filename) == true)
{
vAssembly = Assembly.GetExecutingAssembly();
}
else
{
if (System.IO.File.Exists(filename) == true)
{
vAssembly = Assembly.LoadFrom(filename);
}
else
{
cwfIosys.ioCtrl.MsgShow("程序集文件不存在!\r\n" + filename);
return 0;
}
}
System.Globalization.CultureInfo gcnull = null; object[] objnull = null;
Binder binull = null;
object vTemp = null;
object[] objstr = new object[1];
objstr[0] = mydtmsg;
vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
, objstr, gcnull, objnull);
try
{
if (vTemp == null && appCtrl.appAssembly != null)
{
vAssembly = appCtrl.appAssembly;
vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
, objstr, gcnull, objnull);
}
else
{
if (appCtrl.appAssembly == null)
{
cwfIosys.ioCtrl.MsgShow("appCtrl.appAssembly is Null"
+ "\r\n Assembly vAssembly"
+ "\r\n vAssembly = Assembly.GetExecutingAssembly();" +
"run_winform!", "No vAssembly!", 2, 1500);
}
}
}
catch (Exception cw)
{
if (cw.Message.IndexOf(myfrmname) >= 0)
{ vTemp = vAssembly.CreateInstance(myfrmname);
}
else
{
MessageBox.Show(cw.Message);
cwfIosys.ioCtrl.MsgShow(cw.Message + "\r\n" + cw.GetBaseException().ToString());
}
}
if (vTemp != null)
{
// ((System.Windows.Forms.Form)vTemp).MdiParent = appCtrl.appMainfrom;
((System.Windows.Forms.Form)vTemp).Show();
// ((System.Windows.Forms.Form)vTemp).Name = wname.Replace(".", "_");
// appCtrl.appMainfrom.Load_WorkToolStripStatus(wname.Replace(".", "_"), title);
// ((System.Windows.Forms.Form)vTemp).FormClosed += new System.Windows.Forms.FormClosedEventHandler(appCtrl.frmsys_FormClosed);
return 1;
}
return 0;
}
private int Run_WinForm(string filename, string myfrmname, DataTable mydtmsg)
{
Assembly vAssembly = null;
if (string.IsNullOrEmpty(filename) == true)
{
vAssembly = Assembly.GetExecutingAssembly();
}
else
{
if (System.IO.File.Exists(filename) == true)
{
vAssembly = Assembly.LoadFrom(filename);
}
else
{
cwfIosys.ioCtrl.MsgShow("程序集文件不存在!\r\n" + filename);
return 0;
}
}
System.Globalization.CultureInfo gcnull = null; object[] objnull = null;
Binder binull = null;
object vTemp = null;
object[] objstr = new object[1];
objstr[0] = mydtmsg;
vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
, objstr, gcnull, objnull);
try
{
if (vTemp == null && appCtrl.appAssembly != null)
{
vAssembly = appCtrl.appAssembly;
vTemp = vAssembly.CreateInstance(myfrmname, true, BindingFlags.Default, binull
, objstr, gcnull, objnull);
}
else
{
if (appCtrl.appAssembly == null)
{
cwfIosys.ioCtrl.MsgShow("appCtrl.appAssembly is Null"
+ "\r\n Assembly vAssembly"
+ "\r\n vAssembly = Assembly.GetExecutingAssembly();" +
"run_winform!", "No vAssembly!", 2, 1500);
}
}
}
catch (Exception cw)
{
if (cw.Message.IndexOf(myfrmname) >= 0)
{ vTemp = vAssembly.CreateInstance(myfrmname);
}
else
{
MessageBox.Show(cw.Message);
cwfIosys.ioCtrl.MsgShow(cw.Message + "\r\n" + cw.GetBaseException().ToString());
}
}
if (vTemp != null)
{
// ((System.Windows.Forms.Form)vTemp).MdiParent = appCtrl.appMainfrom;
((System.Windows.Forms.Form)vTemp).Show();
// ((System.Windows.Forms.Form)vTemp).Name = wname.Replace(".", "_");
// appCtrl.appMainfrom.Load_WorkToolStripStatus(wname.Replace(".", "_"), title);
// ((System.Windows.Forms.Form)vTemp).FormClosed += new System.Windows.Forms.FormClosedEventHandler(appCtrl.frmsys_FormClosed);
return 1;
}
return 0;
}
相关文章推荐
- Android 利用反射实现不安装直接运行APK(动态加载)
- 利用反射实现窗体动态加载
- C# aspx页面动态加载ascx用户控件 及 利用反射调用其内方法
- [Java]利用反射机制动态加载并创建包含参数的对象
- (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】
- 利用反射,实现动态调用winform窗体(转)
- 利用反射进行动态加载dll
- 利用反射加载配置文件中的类动态生成集合
- 利用泛型反射在运行时动态创建WCF客户端
- c#中如何利用反射动态加载程序集
- 利用反射,实现动态调用winform窗体!!
- VB 生成exe后,动态加载窗体的show事件会出现运行时错误5的解决方法
- 利用反射,实现动态调用winform窗体
- C# aspx页面动态加载ascx用户控件 及 利用反射调用
- 利用“反射”动态加载R文件中的资源
- (C#)利用反射动态调用类成员、动态加载控件以及插件编程思想
- 利用反射实现类的动态加载
- 利用反射动态加载Assembly动态执行类型方法
- 利用Objective-C的反射机制和运行时特性实现类静态方法的动态访问(二)
- 利用反射动态加载DLL