//绑定点击事件 private void bindClickResponse(ToolStripMenuItem menuItem, MODEL.menu menu) { menuItem.Click += (object sender, EventArgs e) => { // 寻找打开的窗口,如果有已经打开的则不新增 if (tabControl1.TabPages.ContainsKey(menu.fieldName)) { tabControl1.SelectedTab = tabControl1.TabPages[menu.fieldName]; } else { Assembly assembly = Assembly.LoadFile(Application.StartupPath + "\\" + menu.dllName); var currentForm = (assembly.CreateInstance(menu.fieldName) as Form); currentForm.TopLevel = false; currentForm.FormBorderStyle = FormBorderStyle.None; currentForm.Dock = DockStyle.Fill; var tabPage = new TabPage(); tabPage.Name = menu.fieldName; tabPage.Controls.Add(currentForm); tabPage.Text = menu.name; tabControl1.TabPages.Add(tabPage); tabControl1.SelectedTab = tabPage; currentForm.Show(); } }; }
//寻找子菜单 private void findSubNode(MODEL.menu menu, ToolStripMenuItem menuItem) { foreach (var subMenu in listMenu.OrderBy(x => x.showOrder).Where(x => x.parentId == menu.id)) { ToolStripMenuItem subMenuItem = new ToolStripMenuItem(subMenu.name); if (subMenu.canOpen) { bindClickResponse(subMenuItem, subMenu); } ; subMenuItem.Tag = subMenu; menuItem.DropDownItems.Add(subMenuItem); findSubNode(subMenu, subMenuItem); } }