void _yesBtn_Click(object sender, EventArgs e) { //检查信息准确性及完整性 //始化构件实体并记录到XML文件; var retComponent = new Models.Component(); retComponent.InitTopo(_nodeArray.Length); retComponent.Name = _typeTB.Text; for (int i = 0; i < retComponent.NodeNum; i++) { if (_nodeArray[i] != null) { //添加节点信息 retComponent.CmpTopoNet.SetNodeValue(i, new ComponentNode(i, _nodeArray[i])); //添加连接信息 var dgv = _dgvsOpt.DataGridViweList[i]; foreach (DataGridViewRow row in dgv.Rows) { var linkType = (LinkType)Enum.Parse(typeof(LinkType), row.Cells[_dgvColumnTitle_linkType].Value.ToString()); int endId1 = int.Parse(row.Cells[_dgvColumnTitle_end1CmpNum].Value.ToString()); int endId2 = int.Parse(row.Cells[_dgvColumnTitle_end2CmpNum].Value.ToString()); var linkLines = (LinkLanes)Enum.Parse(typeof(LinkLanes), row.Cells[_dgvColumnTitle_dataWidth].Value.ToString()); var curLine = new ComponentLine(linkType, endId1, endId2, linkLines); retComponent.CmpTopoNet.SetLinkValue(curLine); } } } retComponent.SaveXmlByName(); GenerateSourceFile(); this.DialogResult = DialogResult.Yes; }
public override ModelBase CreateObjectByName(string objectName) { Component component = new Component(); string xmlPathDir = Path.Combine(PathManager.GetComponentPath(), objectName); string xmlPath = string.Format("{0}.xml", xmlPathDir); if (!File.Exists(xmlPath)) { MessageBox.Show("CreateObject_Component:没有该Component对应的XML文件!"); return(null); } XDocument xd = XDocument.Load(xmlPath); //根元素的Attribute XElement rt = xd.Element("Component"); component.Name = rt.Attribute("Name").Value; component.InitTopo(int.Parse(rt.Attribute("NodeNum").Value)); var nodesElement = rt.Element("Nodes"); foreach (var e in nodesElement.Elements()) { var nodeId = int.Parse(e.Attribute("NodeNum").Value); var nodeType = (EndType)(Enum.Parse(typeof(EndType), e.Attribute("NodeType").Value)); var nodeName = e.Attribute("NodeName").Value; var nodeObject = Component_GenNodeObj(nodeType, string.Format(@"{0}\{1}.xml", xmlPathDir, nodeName)); var cmpNode = new ComponentNode(nodeId, nodeObject); component.CmpTopoNet.SetNodeValue(nodeId, cmpNode); } var linksElement = rt.Element("Links"); var ethLinksElement = linksElement.Element("EthLinks"); foreach (var eLine in ethLinksElement.Elements()) { component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine)); } var rioLinksElement = linksElement.Element("RioLinks"); foreach (var eLine in rioLinksElement.Elements()) { component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine)); } var gtxLinksElement = linksElement.Element("GTXLinks"); foreach (var eLine in gtxLinksElement.Elements()) { component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine)); } var lvdsLinksElement = linksElement.Element("LVDSLinks"); foreach (var eLine in lvdsLinksElement.Elements()) { component.CmpTopoNet.SetLinkValue(Component_TransXmlLink(eLine)); } return(component); }