/**//// <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] 下一页 |