首页 > 代码库 > [SharpDevelop]菜单状态更新
[SharpDevelop]菜单状态更新
方式一
在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 }
方式二
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 }
方式三
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。