• [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
  • 相关阅读:
    JS中算法之排序算法
    JS中数据结构之图
    JS中数据结构之二叉查找树
    JS中数据结构之集合
    JS中数据结构之散列表
    JS中生成随机数
    JS中数据结构之字典
    JS中数据结构之链表
    JS中数据结构之队列
    JS中数据结构之栈
  • 原文地址:https://www.cnblogs.com/yhlx125/p/3849757.html
Copyright © 2020-2023  润新知