纠结了很多天的问题终于解决了。。。总结一下:
主要就是实现动态从数据库中加载TreeView然后动态的显示到窗体中间,差了很多资料,尝试了很多种方法,最后还是用反射做出来的,
啥话也不说了,直接上代码:
//这个是TreeView中的节点的Click方法:(NodeMouseClick)
private void TVMemu_NodeMouseClick_1(object sender, TreeNodeMouseClickEventArgs e)
{
string fullFormName = e.Node.Tag.ToString(); //完整的反射路径(这块显示的你要显示的窗体在你的项目中的位置)
具体显示(HospitalXPWeb.Systems.Form1,HospitalXPWeb)显示是这个样子的
Type formType = Type.GetType(fullFormName); //该路径的反射
if (formType != null)//查看反射是否成功
{
if (typeof(Form).IsAssignableFrom(formType)) //反射结果是否为窗体Form
{
CloseOtherAllFrom(); //关闭父窗体中的所有子窗体
Form frm = (Form)Activator.CreateInstance(formType); //创建反射窗体实例
frm.Text = e.Node.Text; //窗体名
frm.MdiParent = this; //设置为子窗体与父窗体关系
frm.WindowState = FormWindowState.Maximized;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Show();
}
else
{ MessageBox.Show("指定的类型不能是从Form类型继承", "温馨提示"); }
}
else
{ MessageBox.Show("指定的类型不存在", "温馨提示"); }
}