C# 加载并显示菜单

1,支持cui和cuix。

2,菜单组重复加载或显示,C#下都会崩溃。所以要判断。

3,菜单加到最后。

    public static AcadMenuGroup LoadMenu(AcadMenuGroups menuGroups, string filepath)
        {
            if( null == menuGroups )
            {
               return null;
            }
            if (!System.IO.File.Exists(filepath))
            {
                return null;
            }

            //如果已经加载则直接返回
            string strMenuGroupName = System.IO.Path.GetFileNameWithoutExtension(filepath);
            for (int i = 0; i < menuGroups.Count; i++)
            {
                AcadMenuGroup menuGroup = menuGroups.Item(i);
                if (menuGroup.Name.Equals(strMenuGroupName, StringComparison.OrdinalIgnoreCase))
                {
                    return menuGroup;
                }
            }
            
            return menuGroups.Load(filepath);
          }

        protected void LoadMenu(AcadApplication acadapp,string filepath)
        {
            AcadMenuGroup menuGroup = LoadMenu(acadapp.MenuGroups,filepath);
            if (null == menuGroup)
            {
                return;
            }

            //菜单栏 各popMenu的标题
            List<string> names = new List<string>();
            for (int i = 0; i < acadapp.MenuBar.Count; i++)
            {
                names.Add(acadapp.MenuBar.Item(i).Name);
            }

            for (int i = 0; i < menuGroup.Menus.Count; i++)
            {//依次加到最后
                AcadPopupMenu popMenu = menuGroup.Menus.Item(i);
                if (-1 != names.IndexOf(popMenu.Name))
                {//已经加载
                    continue;
                }
                popMenu.InsertInMenuBar(i + acadapp.MenuBar.Count);
            }
            
        }

  

猜你喜欢

转载自www.cnblogs.com/he-zhidan/p/10566763.html