| 发表于:2007-02-05 12:58:132楼 得分:0 |
public contextmenustrip mainmenu = null; public void createmainmenu(ilist menuitems) { if (mainmenu == null) { mainmenu = new contextmenustrip(); foreach (object item in menuitems) { toolstripmenuitem mi = null; mi = new toolstripmenuitem((string)getvalue(item, "caption ")); mi.name = getvalue(item, "id ").tostring(); //mi.shortcutkeys = (keys)item[ "shortcut "]; mi.tag = item; mi.click += new eventhandler(menuclick); string iconfile = (string)getvalue(item, "icon "); if (system.io.file.exists(iconfile)) { mi.image = image.fromfile(iconfile); } guid fatherid = (guid)getvalue(item, "fatherid "); bool separater = (bool)getvalue(item, "separater "); if (fatherid == guid.empty) { if (separater) mainmenu.items.add( "- "); mainmenu.items.add(mi); } else addchildmenu(fatherid.tostring(), mi, mainmenu.items, separater); } } mainmenu.items.add( "- "); assembly a = assembly.getEXECutingassembly(); system.drawing.image img = image.fromstream(a.getmanifestresourcestream(a.getname().name + ".images.help.ico ")); mainmenu.items.add( "帮助与支持 ", img, menuhelp); if (applicationdeployment.isnetworkdeployed) mainmenu.items.add( "检查更新 ", null, menucheckupdate); mainmenu.items.add( "关于... ", null, menuabout); mainmenu.items.add( "- "); m_minmenu = new toolstripmenuitem( "最小化 ", null, menumin); mainmenu.items.add(m_minmenu); if (mainform.windowstate == formwindowstate.normal) m_maxmenu = new toolstripmenuitem( "最大化 ", null, menumax); else m_maxmenu = new toolstripmenuitem( "还原 ", null, menumax); mainmenu.items.add(m_maxmenu); mainmenu.items.add( "- "); mainmenu.items.add( "退出系统 ", null, menuexit); mainmenu.show(1500, 1500); } private object getvalue(object obj, string propertyname) { system.reflection.propertyinfo pi = obj.gettype().getproperty(propertyname); if (null != pi) return pi.getvalue(obj, null); return null; } private bool addchildmenu(string key, toolstripmenuitem item, toolstripitemcollection items, bool hasseparator) { if (items == null) return false; toolstripmenuitem pmi = items[key] as toolstripmenuitem; if (pmi == null) { foreach (toolstripitem mi in items) { if (mi is toolstripseparator) continue; // skip the separator line if ((pmi = ((mi as toolstripmenuitem).dropdownitems[key] as toolstripmenuitem)) != null) break; } } if (pmi != null) { if (hasseparator) pmi.dropdownitems.add( "- "); pmi.dropdownitems.add(item); pmi.click -= new eventhandler(menuclick); return true; } else foreach (toolstripitem mi in items) { if (mi is toolstripseparator) continue; // skip the separator line if (addchildmenu(key, item, (mi as toolstripmenuitem).dropdownitems, hasseparator)) return true; } return false; } #region menu event public void menuclick(object sender, eventargs e) { object menu = null; if (sender is toolstripitem) menu = (sender as toolstripitem).tag; else if (sender is listviewitem) menu = (sender as listviewitem).tag; if (menu != null) kitemodule.instance.runmodule((string)getvalue(menu, "modulename "), (string)getvalue(menu, "typename ")); } private void menuhelp(object sender, eventargs e) { if (showhelp != null) showhelp(sender, eventargs.empty); } private void menuabout(object sender, eventargs e) { if (showabout != null) showabout(sender, eventargs.empty); } private void menuexit(object sender, eventargs e) { application.exit(); } private void menucheckupdate(object sender, eventargs e) { kitesoft.utils.update.checkupdate(); } private void menumin(object sender, eventargs e) { //foreach (baseform frm in baseform.formlist) // frm.windowstate = formwindowstate.minimized; mainform.windowstate = formwindowstate.minimized; } private void menumax(object sender, eventargs e) { //foreach (baseform frm in baseform.formlist) // frm.windowstate = formwindowstate.minimized; if (mainform.windowstate == formwindowstate.normal) { mainform.windowstate = formwindowstate.maximized; m_maxmenu.text = "还原 "; } else { mainform.windowstate = formwindowstate.normal; m_maxmenu.text = "最大化 "; } } #endregion | | |
|