public static void SetMenuState(this IChildMdiForm menuWindow) { if (menuWindow == null) { return; } IList <IButton> tsbs = menuWindow.GetCustomProperty(s_windowMenuButtonName) as IList <IButton>; if (tsbs != null) { IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null) { if (cmContainer != null && cmContainer.ControlManager != null) { foreach (IButton tsb in tsbs) { SetTsbState(tsb, cmContainer.ControlManager); } } } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { foreach (IButton tsb in tsbs) { SetTsbState(tsb, dmContainer.DisplayManager); } } } } }
public static void DisposeWindowMenu(this IChildMdiForm menuWindow) { IList <IButton> tsbs = menuWindow.GetCustomProperty(s_windowMenuButtonName) as IList <IButton>; if (tsbs != null) { foreach (IButton tsb in tsbs) { tsb.Click -= new EventHandler(tsb_Click); } tsbs.Clear(); } ToolStrip toolStrip = menuWindow.GetCustomProperty("WindowMenuGeneratedToolStrip") as ToolStrip; if (toolStrip != null) { menuWindow.RevertMergeToolStrip(toolStrip); } IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null && cmContainer.ControlManager != null) { cmContainer.ControlManager.DisplayManager.PositionChanged -= new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded -= new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged -= new EventHandler(cmContainer.ControlManager_StateChanged); } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { dmContainer.DisplayManager.PositionChanged -= new EventHandler(dmContainer.DisplayManager_PositionChanged); } } }
public static void GenerateWindowMenu(this IChildMdiForm menuWindow, IList <WindowMenuInfo> windowMenuInfos) { // WindowMenu if (windowMenuInfos != null && windowMenuInfos.Count > 0) { IList <IButton> tsbs = new List <IButton>(); ToolStrip toolStripDetail = GenerateWindowMenu(windowMenuInfos, tsbs, GetExistToolStripItems(menuWindow.ToolStrip)); menuWindow.MergeToolStrip(toolStripDetail); menuWindow.SetCustomProperty(s_windowMenuButtonName, tsbs); menuWindow.SetCustomProperty("WindowMenuGeneratedToolStrip", toolStripDetail); IControlManagerContainer cmContainer = menuWindow as IControlManagerContainer; if (cmContainer != null && cmContainer.ControlManager != null) { cmContainer.ControlManager.DisplayManager.PositionChanged -= new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded -= new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged -= new EventHandler(cmContainer.ControlManager_StateChanged); cmContainer.ControlManager.DisplayManager.PositionChanged += new EventHandler(cmContainer.ControlManager_PositionChanged); cmContainer.ControlManager.EditEnded += new EventHandler(cmContainer.ControlManager_EditEnded); cmContainer.ControlManager.StateChanged += new EventHandler(cmContainer.ControlManager_StateChanged); } else { IDisplayManagerContainer dmContainer = menuWindow as IDisplayManagerContainer; if (dmContainer != null && dmContainer.DisplayManager != null) { // only one. DetailWindow.DisplayManager = MasterWindow.DisplayManager. 当时也可能不一致,-=无效。 // // 可能和MasterWindow不是同一个ControlManager dmContainer.DisplayManager.PositionChanged -= new EventHandler(dmContainer.DisplayManager_PositionChanged); dmContainer.DisplayManager.PositionChanged += new EventHandler(dmContainer.DisplayManager_PositionChanged); } } } }