转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
一个简单的基于XML的模块集成框架(3)         ★★★★

一个简单的基于XML的模块集成框架(3)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1358 更新时间:2009/4/23 11:18:46
     /**//// <summary>
   /// 加载所有子菜单
   /// </summary>
   /// <param name="main">主菜单集合</param>
   /// <param name="node">菜单节点集合</param>
   private void GetSubMenus(IconPanel[] iplist ,OfficeMenuItem[] main, XmlNode[] node)
   {
   EventHandler handler = new EventHandler(OnPluginClick);
   EventHandler handler1 = new EventHandler(OnIconClick);
   EventHandler handler2 = new EventHandler(OnButtonClick);
   string asmname;
   string formtag;
   string text;
   MenuClass mc;
   XmlNode child;
   string iconpath = "";
   string iconname = "";
   string msc = "";
   for(int i = 0; i <= main.GetUpperBound(0); i++)
   {
   //foreach(XmlNode child in node[i].ChildNodes)
   for(int j = 0; j < node[i].ChildNodes.Count;j++ )
   {
   child = node[i].ChildNodes[j];
   if(child.NodeType == XmlNodeType.Element && child.Name == "MenuItem")
   {
   asmname = child.Attributes["AssemblyName"].Value;
   formtag = child.Attributes["FormTag"].Value;
   text = child.Attributes["Name"].Value;
   msc = child.Attributes["ShortCut"].Value;
   OfficeMenuItem item = new OfficeMenuItem(true, text, handler);
   iconname = child.Attributes["Image"].Value;
   if(iconname != string.Empty)
   {
   iconpath = Themes.GetCurrentThemePath() +iconname;
   item.IconPath = iconpath;
  
   }
   mc = new MenuClass();
   mc.Assemblyname = asmname;
   mc.FormTag = formtag;
  
   item.Tag = mc;
  
   if(msc != string.Empty)
   {
   item.Shortcut = MenuShortCut.GetShortCut(msc);
   }
  
   main[i].MenuItems.Add(item);
  
   if((iconpath != string.Empty) && System.IO.File.Exists(iconpath))
   { //添加按钮到OutlookBar
   PanelIcon picon = iplist[i].AddIcon(item.Text,Image.FromFile(iconpath),handler1);
   picon.Tag = mc;
   //添加按钮到toolbar
   ToolStripButton button = new ToolStripButton(item.Text, Image.FromFile(iconpath), handler2);
   button.DisplayStyle = ToolStripItemDisplayStyle.Image;
   button.ToolTipText = item.Text;
   button.Tag = mc;
   button.Visible = true;
   _toolbar.Items.Add(button);
   }
  
   iconpath = "";
   mc = null;
  
   if(child.ChildNodes.Count > 0)
   {
   GetChildMenu(iplist[i],item, child);
   }
   }
   }
   //添加分割线
   ToolStripSeparator ss = new ToolStripSeparator();
   _toolbar.Items.Add(ss);
   }
   }
  
   /**//// <summary>
   /// 加载子菜单
   /// </summary>
   /// <param name="parent">父菜单</param>
   /// <param name="node">父菜单定义XML节点</param>
   private void GetChildMenu(IconPanel ip,OfficeMenuItem parent, XmlNode node)
   {
   EventHandler handler = new EventHandler(OnPluginClick);
   EventHandler handler1 = new EventHandler(OnIconClick);
   EventHandler handler2 = new EventHandler(OnButtonClick);
  
   MenuClass mc;
   string asmname;
   string formtag;
   string text;
   XmlNode child1;
   string iconpath = "";
   string iconname = "";
   string msc = "";
   //foreach(XmlNode child1 in node.ChildNodes)
   for(int i = 0; i < node.ChildNodes.Count - 1;i++ )
   {
   child1 = node.ChildNodes[i];
   //检查是否提供了类型
   asmname = child1.Attributes["AssemblyName"].Value;
   formtag = child1.Attributes["FormTag"].Value;
   text = child1.Attributes["Name"].Value;
   OfficeMenuItem childitem;
  
   childitem = new OfficeMenuItem(true, text, handler);
   childitem.Name = text;
   mc = new MenuClass();
   mc.Assemblyname = asmname;
   mc.FormTag = formtag;
  
   childitem.Tag = mc;
   //添加快捷键
   msc = child1.Attributes["ShortCut"].Value;
   if(msc != string.Empty)
   {
   childitem.Shortcut = MenuShortCut.GetShortCut(msc);
   }
   //添加图标
   iconname = child1.Attributes["Image"].Value;
   if(iconname != string.Empty)
   {
   iconpath = Themes.GetCurrentThemePath() + iconname;
   childitem.IconPath = iconpath;
   }
  
   parent.MenuItems.Add(childitem);
  
   if((iconpath != string.Empty) && System.IO.File.Exists(iconpath))
   { //添加按钮到OutlookBar
   PanelIcon picon = ip.AddIcon(childitem.Text, Image.FromFile(iconpath), handler1);
   picon.Tag = mc;
   //添加按钮到toolbar
   ToolStripButton button = new ToolStripButton(childitem.Text, Image.FromFile(iconpath), handler2);
   button.DisplayStyle = ToolStripItemDisplayStyle.Image;
   button.ToolTipText = childitem.Text;
   button.Tag = mc;
   button.Visible = true;
   _toolbar.Items.Add(button);
   }
  
   iconpath = "";
   mc = null;
  
   if(child1.ChildNodes.Count > 0)
   {
   GetChildMenu(ip,childitem, child1);
   }
   }
   }
  
   /**//// <summary>
   /// 打开一个窗体
   /// </summary>
   /// <param name="asmname">窗体类程序集和窗体类的组合,从节点的AssemblyName属性获取</param>
   private void OpenForm(MenuClass mc)
   {
   string asmname = mc.Assemblyname;
   string formtag = mc.FormTag;
  
   if (formtag == "")
   {
   throw new Exception(Resources.StringNoFormFlag);
   }
  
   if(formtag.ToUpper() == "TRUE")
   {
   if(asmname == string.Empty)
   {
   throw new NullReferenceException(Resources.StringAssemblyNull);
   }
  
  
   //string[] a = asmname.Split(',');
   obje

[1] [2]  下一页


[Web开发]一个简单的基于XML的模块集成框架(2)  [Web开发]一个简单的基于XML的模块集成框架(1)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台