[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         }
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 menu
10             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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值