標籤:style blog http color os art
方式一
在Idle方法中更新
1 void OnApplicationIdle(object sender, EventArgs e) 2 { 3 // Use the Idle event to update the status of menu and toolbar. 4 // Depending on your application and the number of menu items with complex conditions, 5 // you might want to update the status less frequently. 6 UpdateMenuItemStatus(); 7 } 8 9 /// <summary>Update Enabled/Visible state of items in the main menu based on conditions</summary>10 void UpdateMenuItemStatus()11 {12 foreach (ToolStripItem item in menu.Items) {13 if (item is IStatusUpdate)14 (item as IStatusUpdate).UpdateStatus();15 }16 }View Code
方式二
sealed class DefaultWorkbench : Form, IWorkbench
通過一個Timer來更新
1 toolbarUpdateTimer = new System.Windows.Forms.Timer();2 toolbarUpdateTimer.Tick += new EventHandler(UpdateMenu);
1 void UpdateMenu(object sender, EventArgs e) 2 { 3 UpdateMenus(); 4 UpdateToolbars(); 5 } 6 7 void UpdateMenus() 8 { 9 // update menu10 foreach (object o in TopMenu.Items) {11 if (o is IStatusUpdate) {12 ((IStatusUpdate)o).UpdateStatus();13 }14 }15 }16 17 void UpdateToolbars()18 {19 if (ToolBars != null) {20 foreach (ToolStrip toolStrip in ToolBars) {21 ToolbarService.UpdateToolbar(toolStrip);22 }23 }24 }View Code
方式三
sealed partial class WpfWorkbench : FullScreenEnabledWindow, IWorkbench, System.Windows.Forms.IWin32Window
1 requerySuggestedEventHandler = new EventHandler(CommandManager_RequerySuggested);2 CommandManager.RequerySuggested += requerySuggestedEventHandler;
1 EventHandler requerySuggestedEventHandler; 2 3 void CommandManager_RequerySuggested(object sender, EventArgs e) 4 { 5 UpdateMenu(); 6 } 7 void UpdateMenu() 8 { 9 MenuService.UpdateStatus(mainMenu.ItemsSource);10 foreach (ToolBar tb in toolBars) 11 {12 ToolBarService.UpdateStatus(tb.ItemsSource);13 }14 }View Code