110,539
社区成员
发帖
与我相关
我的任务
分享
public void OpenWindow(string ChildTypeString)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString))
{
// Get current process assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Create data type using type string
Type typForm = assembly.GetType(ChildTypeString);
// Create object using type's "InvokeMember" method
Object obj = typForm.InvokeMember(
null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance,
null,
null,
null);
// Show child form
if (obj != null)
{
myChild = obj as Form;
myChild.FormClosed += new FormClosedEventHandler(myChild_FormClosed);
myChild.StartPosition = FormStartPosition.CenterScreen;
myChild.MdiParent = this;
myChild.Show();
myChild.Focus();
}
}
}
项目中原来创建新窗口的代码是这么写的,不是用new的方式,强行改为new的方式也不可取,因为项目中有一个frmParent的基类,所有的子窗口都基于frmParent的基类