1、新建主窗体frmMain,并在其类增加一属性
public DockPanel DockPanel
{
get
{
return this.dockPanel;
}
}
2、增加子窗体frmSysMenu,并增加一方法
private Control GetTopParent(Control control)
{
while (control.Parent != null)
{
control = control.Parent;
}
return control;
}
3、如何在子窗体frmSysMenu里调用其他子窗体
try
{
//使用反射
object obj = Assembly.LoadFrom(strDllName + ".DLL").CreateInstance(strDllName.Substring(0, strDllName.Length - 3) + "." + strFrmName);
if (obj != null)
{
if (((frmMain)GetTopParent(this)).DockPanel.DocumentStyle == DocumentStyle.SystemMdi)
{
((DockContent)obj).MdiParent = (frmMain)GetTopParent(this);
((DockContent)obj).Show();
}
else
{
((DockContent)obj).Show(((frmMain)GetTopParent(this)).DockPanel);
}
}
}
catch (Exception ex)
{
//throw new Exception (ex.ToString() );
MessageBox.Show("系统菜单调用失败!/r/n "+"错误信息如下:"+ex.ToString() , "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
本文介绍了一种在子窗体中通过反射调用其他子窗体的方法,并展示了如何实现这一过程的具体代码。文章首先创建了一个主窗体,并定义了用于获取顶级父窗口的辅助函数,接着详细说明了如何利用反射加载指定DLL文件中的窗体类型,并根据不同文档样式正确显示这些窗体。
4982

被折叠的 条评论
为什么被折叠?



