public NavBarGroupTagObject(string name, Type moduleType, RibbonControlColorScheme ribbonScheme) { this.name = name; this.moduleType = moduleType; this.ribbonScheme = ribbonScheme; this.paramObj = null; module = null; }
public void ChangeSelectedItem(NavBarItemLink link, object moduleData) { NavBarGroupTagObject groupObject = link.Item.Tag as NavBarGroupTagObject; if (groupObject == null) { return; } List <RibbonPage> deferredPagesToShow = new List <RibbonPage>(); foreach (RibbonPage page in ribbon.Pages) { if (!string.IsNullOrEmpty(string.Format("{0}", page.Tag))) { bool isPageVisible = groupObject.Name.Equals(page.Tag); if (isPageVisible != page.Visible && isPageVisible) { deferredPagesToShow.Add(page); } else { page.Visible = isPageVisible; } } } bool firstShow = groupObject.Module == null; if (firstShow) { if (SplashScreenManager.Default == null) { SplashScreenManager.ShowForm(ribbon.FindForm(), typeof(Forms.wfMain), false, true); } ConstructorInfo constructorInfoObj = groupObject.ModuleType.GetConstructor(groupObject.ParamType); if (constructorInfoObj != null) { try { groupObject.Module = constructorInfoObj.Invoke(groupObject.Param) as BaseModule; if (groupObject.Module == null) { return; } groupObject.Module.InitModule(ribbon, moduleData); currentModuleName = link.Caption; } catch (Exception e) { var entryAsm = Assembly.GetEntryAssembly(); string msg = string.Format("Error on Showing Module: {0}\r\nPrevModule: {1}\r\nStartUp: {2}", link.Caption, currentModuleName, (entryAsm != null ? entryAsm.Location : string.Empty)); throw new ApplicationException(msg, e); } } if (SplashScreenManager.Default != null) { Form frm = moduleData as Form; if (frm != null) { if (SplashScreenManager.FormInPendingState) { SplashScreenManager.CloseForm(); } else { SplashScreenManager.CloseForm(false, 500, frm); } } else { SplashScreenManager.CloseForm(); } } } //切换界面时重置界面权限 //if(groupObject.Module!=null) Program.permissionManager.ApplyPermission(groupObject.Module); ribbon.ColorScheme = groupObject.RibbonScheme; foreach (RibbonPage page in deferredPagesToShow) { page.Visible = true; } foreach (RibbonPage page in ribbon.Pages) { if (page.Visible && ribbon.SelectedPage == page) { ribbon.SelectedPage = page; break; } } if (groupObject.Module != null) { if (panel.Controls.Count > 0) { BaseModule currentModule = panel.Controls[0] as BaseModule; if (currentModule != null) { currentModule.HideModule(); } } panel.Controls.Clear(); panel.Controls.Add(groupObject.Module); groupObject.Module.Dock = DockStyle.Fill; groupObject.Module.ShowModule(firstShow); } }