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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:665 更新时间:2009/4/23 11:18:47
     。定义一个类来加载菜单
  
  public class MenuLoad
   {
   private PluginCollection m_plugins = null;
   public MenuBar _menbar = new MenuBar();
   public ToolStrip _toolbar = new ToolStrip();
   private OutlookBar bar = new OutlookBar();
   private ImageList imglist = new ImageList();
   private StringBuilder builder = new StringBuilder();
  
   public MenuLoad()
   {
   bar = _menbar.outlookBar;
   }
  
   private TabControl tabCtrl;
   public TabControl TabCtrl
   {
   set
   {
   tabCtrl = value;
   }
   }
  
   private void ValidationEventHandler(object sender, ValidationEventArgs e)
   {
   builder.AppendLine("验证XML文档的时候发生错误:");
   builder.AppendLine("严重级别:" + e.Severity);
   builder.AppendLine("错误信息:" + e.Message);
   builder.AppendLine("------+--------+-------+------+--------+-------+------+--------+-------+");
   builder.AppendLine();
   }
  
   /**//// <summary>
   /// 验证XML文件是否是合乎规范的文件
   /// </summary>
   /// <param name="xmlfile">文件名称</param>
   /// <returns>是则返回true,否则返回false</returns>
   private bool ValidateXml(string xmlfile)
   {
   bool validXml = false;
   string spath = "";
  
   spath = Application.StartupPath + "\\configurations\\XMLSMenu.xsd";
   if(!System.IO.File.Exists(spath))
   {
   throw new System.IO.FileNotFoundException(String.Format(Resources.StringFileNotFound, spath));
   }
  
   XmlReaderSettings settings = new XmlReaderSettings();
   XmlSchemaSet schemaSet = new XmlSchemaSet();
   schemaSet.Add(null, spath);
   settings.Schemas.Add(schemaSet);
   settings.ValidationType = ValidationType.Schema;
   settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
   settings.ValidationFlags = settings.ValidationFlags | XmlSchemaValidationFlags.ReportValidationWarnings;
  
   XmlReader reader = XmlReader.Create(xmlfile, settings);
  
  
   while(reader.Read())
   {
  
   }
  
   if(builder.Length > 0)
   {
   validXml = false;
   }
   else
   {
   validXml = true;
   }
   reader.Close();
   return validXml;
  
   }
   /**//// <summary>
   /// 加载菜单
   /// </summary>
   /// <param name="main">主菜单</param>
   /// <param name="xmlfile">菜单定义文件</param>
   public MainMenu LoadMenus(string xmlfile)
   {
   MainMenu mainmenu = new MainMenu();
  
   try
   {
   using(new WaitCursor())
   {
   //验证XML是否是合乎规范的XML文件
   if(ValidateXml(xmlfile))
   {
   XmlDocument document = new XmlDocument();
   document.Load(xmlfile);
  
   XmlNode rootNode = document.DocumentElement;
   mainmenu = GetMenus(rootNode);
   }
   else
   {
   throw new Exception(builder.ToString());
   }
   }
   }
   catch (System.IO.FileNotFoundException)
   {
   Utility.ShowErrorMsg(String.Format(Resources.StringFileNotFound, xmlfile));
   }
  
   return mainmenu;
   }
  
   /**//// <summary>
   /// 加载菜单
   /// </summary>
   /// <param name="main">主菜单</param>
   /// <param name="node">菜单项节点</param>
   private MainMenu GetMenus(XmlNode node)
   {
   MainMenu mainmenu = new MainMenu();
   List<XmlNode> nodelist= new List<XmlNode>();
   List<OfficeMenuItem> mnulist = new List<OfficeMenuItem>();
   List<IconPanel> iplist = new List<IconPanel>();
   string menutext ="";
   //首先加载主菜单,避免迭代的时候菜单显示的过分延迟。
   foreach(XmlNode child in node.ChildNodes)
   {
   if(child.NodeType == XmlNodeType.Element && child.Name == "MenuItem")
   {
   menutext = child.Attributes["Name"].Value;
   OfficeMenuItem item = new OfficeMenuItem(true,menutext);
   mainmenu.MenuItems.Add(item);
   IconPanel cp = new IconPanel();
   bar.AddBand(menutext, cp);
   nodelist.Add(child);
   mnulist.Add(item);
   iplist.Add(cp);
   }
   }
   //加载所有的子菜单
   GetSubMenus(iplist.ToArray(),mnulist.ToArray(), nodelist.ToArray());
   return mainmenu;
   }
  
  
    


[Web开发]一个简单的基于XML的模块集成框架(1)  [Web开发]一个简单的基于XML的模块集成框架(3)
教程录入: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……
    咸宁网络警察报警平台