/// <summary> /// 注册所有控件类型 /// /// 后面会通过该类型创建对象 /// </summary> void initInstance() { SVNameToObject.addInstance(typeof(SVButton)); SVNameToObject.addInstance(typeof(SVLabel)); SVNameToObject.addInstance(typeof(SVAnalog)); SVNameToObject.addInstance(typeof(SVBinary)); SVNameToObject.addInstance(typeof(SVCurve)); SVNameToObject.addInstance(typeof(SVGif)); SVNameToObject.addInstance(typeof(SVIcon)); SVNameToObject.addInstance(typeof(SVLine)); SVNameToObject.addInstance(typeof(SVHeartbeat)); }
/* * 通过XML文件来加载页面控件对象 * * xml - 一个页面对应的xml对象 * isCreate - true: 创建新的ID号 * false: 直接使用文件中的ID号 * */ public void loadXML(SVXml xml, Boolean isCreate = false) { _redoUndo.setEnabled(false); XmlElement page = xml.CurrentElement; if (isCreate) { var instance = SVUniqueID.instance(); _attrib.id = instance.newUniqueID(); instance.saveFile(); } else { _attrib.id = UInt16.Parse(page.GetAttribute("ID")); } try { XmlElement width = xml.select("Width"); _attrib.Width = int.Parse(width.InnerText); XmlElement height = xml.select("Height"); _attrib.Height = int.Parse(height.InnerText); XmlElement back = xml.select("Backcolor"); _attrib.BackColor = Color.FromArgb(int.Parse(back.InnerText)); XmlElement mainPage = xml.select("MainPage"); _attrib.IsMainPage = Boolean.Parse(mainPage.InnerText); if (_attrib.IsMainPage) { setToMainPageWidget(); } XmlElement backGroundType = xml.select("BackGroundType"); _attrib.BackGroundType = Byte.Parse(backGroundType.InnerText); XmlElement picShowName = xml.select("PicShowName"); _attrib.PicIconData.ShowName = picShowName.InnerText; XmlElement picFile = xml.select("PicFile"); _attrib.PicIconData.ImageFileName = picFile.InnerText; XmlElement alignMent = xml.select("alignment"); _attrib.IsAlignment = Byte.Parse(alignMent.InnerText); } catch (Exception) { } //读取当前页面的所有子控件 List <XmlElement> listNodes = xml.selectChilds(); foreach (XmlElement node in listNodes) { SVPanel svPanel = SVNameToObject.getInstance(node.Name) as SVPanel; if (svPanel == null) { continue; } svPanel.setRedoUndoObject(_redoUndo); svPanel.setParentID(_attrib.id); svPanel.MouseDown += new MouseEventHandler((sder, ev) => { MouseSelectEvent(sder, ev); }); svPanel.MouseUp += new MouseEventHandler((sder, ev) => { MouseSelectEvent(sder, ev); }); this.Controls.Add(svPanel); xml.CurrentElement = node; svPanel.loadXML(xml, isCreate); svPanel.refreshPropertyToPanel(); } _redoUndo.setEnabled(true); }