}
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;
}
/**//// <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)
{
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




