⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flowmap.cs

📁 c#定义XML
💻 CS
📖 第 1 页 / 共 3 页
字号:
							strType="自动";
							break;
						case 5:
							strType="分流";
							break;
						case 6:
							strType="合流";
							break;
						case 7:
							strType="转流程";
							break;
					}
					Font drawFont = new Font("宋体", 9);
					StringFormat drawFormat = new StringFormat();	

					drawFormat.Alignment = StringAlignment.Center;
					SolidBrush drawBrush = new SolidBrush(Color.Black);

					RectangleF drawRect = new RectangleF( x1, y1, w1, Convert.ToInt32(h1*0.6));
					RectangleF drawRect2 = new RectangleF( x1, y1+Convert.ToInt32(h1*0.6), w1, Convert.ToInt32(h1*0.4));
					g.DrawString(strType,drawFont, drawBrush, drawRect, drawFormat);			
					g.DrawString(strName,drawFont, new SolidBrush(Color.White), drawRect2, drawFormat);			
				}//end if 
			}//end for	
			g.Dispose();//画代表状态的矩形	    
			this.drawAllDisposal();//画线   
	}


		public FlowStatus SelectStatus(int mouseX,int mouseY)//通过鼠标点的位置找到包含该点的状态对象
		{
			FlowStatus objStatus=null;			
			int statusSize=aryStatus.Count;  
			if(statusSize==0) return null;
			foreach (Object item in aryStatus)
			{
				FlowStatus objTemp=(FlowStatus)item;

				if(objTemp.contains(mouseX,mouseY))
				{
					objStatus=objTemp;
					return objStatus;
				}		
			}
			return objStatus;
		}



		private void FlowMap_Load(object sender, System.EventArgs e)
		{
		
		}	
		public string objToXml()//将拓扑图生成xml字符串
		{
			try
			{
				XmlDocument doc= new XmlDocument();
				doc.LoadXml("<root></root>");//根节点			
				XmlNode root = doc.DocumentElement;		
				XmlElement elemMap = doc.CreateElement("FlowMap");//拓扑图节点
				XmlAttribute mapAttr = doc.CreateAttribute("ID");//拓扑图编号
				mapAttr.Value = "1";
				elemMap.Attributes.Append(mapAttr);

				XmlElement	elemStatusList=doc.CreateElement("StatusList");//状态对象列表节点	
				elemMap.AppendChild(elemStatusList);
				foreach(FlowStatus itemStatus in this.aryStatus)
				{
					if(itemStatus.blDisplay)//状态对象没有被删除
					{
						XmlElement elemStatus = doc.CreateElement("Status");//状态对象节点
						XmlAttribute StatusAttr = doc.CreateAttribute("statusId");//状态对象编号
						StatusAttr.Value =Convert.ToString(itemStatus.dblStatusId);
						elemStatus.Attributes.Append(StatusAttr);
						//状态对象的其余属性用xml节点来表示

						XmlElement elemstatusTypeId = doc.CreateElement("statusTypeId");
						elemstatusTypeId.InnerText=Convert.ToString(itemStatus.intStatusTypeId);
						elemStatus.AppendChild(elemstatusTypeId);

						XmlElement elemstatusName = doc.CreateElement("statusName");
						elemstatusName.InnerText=itemStatus.strStatusName;
						elemStatus.AppendChild(elemstatusName);

						XmlElement elemstatusX = doc.CreateElement("statusX");
						elemstatusX.InnerText=Convert.ToString(itemStatus._x);
						elemStatus.AppendChild(elemstatusX);

						XmlElement elemstatusY = doc.CreateElement("statusY");
						elemstatusY.InnerText=Convert.ToString(itemStatus._y);
						elemStatus.AppendChild(elemstatusY);

						XmlElement elemstatusJoinRule = doc.CreateElement("statusJoinRule");
						elemstatusJoinRule.InnerText=Convert.ToString(itemStatus.strJoinRule);
						elemStatus.AppendChild(elemstatusJoinRule);

						XmlElement elemstatusInterfixField = doc.CreateElement("statusInterfixField");
						elemstatusInterfixField.InnerText=Convert.ToString(itemStatus.strInterfixField);
						elemStatus.AppendChild(elemstatusInterfixField);

						XmlElement elemsstatusComExtend = doc.CreateElement("statusComExtend");
						elemsstatusComExtend.InnerText=itemStatus.strComExtend;
						elemStatus.AppendChild(elemsstatusComExtend);

						XmlElement elemstatusChildFlowType = doc.CreateElement("statusChildFlowType");
						elemstatusChildFlowType.InnerText=itemStatus.strChildFlowType;
						elemStatus.AppendChild(elemstatusChildFlowType);
					
						XmlElement elemstatusChildFlowHint = doc.CreateElement("statusChildFlowHint");
						elemstatusChildFlowHint.InnerText=itemStatus.strChildFlowHint;
						elemStatus.AppendChild(elemstatusChildFlowHint);

						XmlElement elemstatusChildFlow = doc.CreateElement("statusChildFlow");
						elemstatusChildFlow.InnerText=itemStatus.strChildFlow;
						elemStatus.AppendChild(elemstatusChildFlow);

						XmlElement elemstatusChangeFlowName = doc.CreateElement("statusChangeFlowName");
						elemstatusChangeFlowName.InnerText=itemStatus.strChangeFlowName;
						elemStatus.AppendChild(elemstatusChangeFlowName);

						XmlElement elemstatusChangeStatusName = doc.CreateElement("statusChangeStatusName");
						elemstatusChangeStatusName.InnerText=itemStatus.strChangeStatusName;
						elemStatus.AppendChild(elemstatusChangeStatusName);

						XmlElement elemstatusAutoFieldList = doc.CreateElement("statusAutoFieldList");
						elemstatusAutoFieldList.InnerText=itemStatus.strAutoFieldList;
						elemStatus.AppendChild(elemstatusAutoFieldList);

						XmlElement elemstatusAutoRule = doc.CreateElement("statusAutoRule");
						elemstatusAutoRule.InnerText=itemStatus.strAutoRule;
						elemStatus.AppendChild(elemstatusAutoRule);

						XmlElement elemstatusAutoFieldName = doc.CreateElement("statusAutoFieldName");
						elemstatusAutoFieldName.InnerText=itemStatus.strAutoFieldName;
						elemStatus.AppendChild(elemstatusAutoFieldName);

						XmlElement elemstatusJoinRule2= doc.CreateElement("statusJoinRule2");
						elemstatusJoinRule2.InnerText=itemStatus.strJoinRule2;
						elemStatus.AppendChild(elemstatusJoinRule2);

						elemStatusList.AppendChild(elemStatus);//将状态对象加入到状态对象列表中
						}
					}
				
				XmlElement	elemDisposalList=doc.CreateElement("DisposalList");//处理对象列表节点	
				elemMap.AppendChild(elemDisposalList);		
				foreach(FlowDisposal itemDisp in this.aryDisposal)
				{
						if(itemDisp.blDisplay)//没有被删除
					{
						XmlElement elemDisp= doc.CreateElement("Disposal");//处理对象节点
						XmlAttribute DispAttr = doc.CreateAttribute("disposalId");//处理对象编号
						DispAttr.Value =Convert.ToString(itemDisp.dblDisposalId);
						elemDisp.Attributes.Append(DispAttr);
						//处理对象的其余属性用xml节点来表示

						XmlElement elemdisposalName = doc.CreateElement("disposalName");
						elemdisposalName.InnerText=itemDisp.strDisposalName;
						elemDisp.AppendChild(elemdisposalName);

						XmlElement elemdisposalHint = doc.CreateElement("disposalHint");
						elemdisposalHint.InnerText=itemDisp.strDisposalHint;
						elemDisp.AppendChild(elemdisposalHint);

						XmlElement elemdisposalTransactStatusId = doc.CreateElement("disposalTransactStatusId");
						elemdisposalTransactStatusId.InnerText=Convert.ToString(itemDisp.dblTransactStatusId);
						elemDisp.AppendChild(elemdisposalTransactStatusId);

						XmlElement elemdisposalGroupLimit = doc.CreateElement("disposalGroupLimit");
						elemdisposalGroupLimit.InnerText=Convert.ToString(itemDisp.intGroupLimit);
						elemDisp.AppendChild(elemdisposalGroupLimit);

						XmlElement elemdisposalCurStatusId = doc.CreateElement("disposalCurStatusId");
						elemdisposalCurStatusId.InnerText=Convert.ToString(itemDisp.dblCurStatusId);
						elemDisp.AppendChild(elemdisposalCurStatusId);

						XmlElement elemdisposalPreStatusId = doc.CreateElement("disposalPreStatusId");
						elemdisposalPreStatusId.InnerText=Convert.ToString(itemDisp.dblPreStatusId);
						elemDisp.AppendChild(elemdisposalPreStatusId);

						XmlElement elemdisposalX = doc.CreateElement("disposalX");
						elemdisposalX.InnerText=Convert.ToString(itemDisp.intCurX);
						elemDisp.AppendChild(elemdisposalX);

						XmlElement elemdisposalY = doc.CreateElement("disposalY");
						elemdisposalY.InnerText=Convert.ToString(itemDisp.intCurY);
						elemDisp.AppendChild(elemdisposalY);

						XmlElement elemX1 = doc.CreateElement("X1");
						elemX1.InnerText=Convert.ToString(itemDisp.x1);
						elemDisp.AppendChild(elemX1);

						XmlElement elemY1 = doc.CreateElement("Y1");
						elemY1.InnerText=Convert.ToString(itemDisp.y1);
						elemDisp.AppendChild(elemY1);

						XmlElement elemX2 = doc.CreateElement("X2");
						elemX2.InnerText=Convert.ToString(itemDisp.x2);
						elemDisp.AppendChild(elemX2);

						XmlElement elemY2 = doc.CreateElement("Y2");
						elemY2.InnerText=Convert.ToString(itemDisp.y2);
						elemDisp.AppendChild(elemY2);
						elemDisposalList.AppendChild(elemDisp);
					}
				}
				root.AppendChild(elemMap);
				return doc.OuterXml; 
			}
			catch(Exception e)
			{
				string strError="格式错误,转换出错!";
				MessageBox.Show(strError); 
				return strError;
			}
		}


public void xmlToObj(string strXml)//将xml字符转换成拓扑图
{
	this.aryStatus.Clear();
	this.aryDisposal.Clear();
	this.Controls.Clear();
try
{
	XmlDocument doc= new XmlDocument();
	doc.LoadXml(strXml);//根节点
	XmlNodeList eMapList=doc.GetElementsByTagName("FlowMap");
	XmlNode eMapNode=eMapList[0];//拓扑图对象
	double tmpFlowId=Convert.ToDouble(eMapNode.Attributes["ID"].Value);//拓扑图编号

	XmlNodeList eStatusList=doc.GetElementsByTagName("Status");
				
	for(int i=0;i<eStatusList.Count;i++)
	{
	FlowStatus objTemp=new FlowStatus(0,0,this.intStatusW,this.intStautsH);

	XmlNode eStatus=eStatusList[i];//状态对象
	objTemp.dblStatusId= Convert.ToDouble(eStatus.Attributes["statusId"].Value);//状态编号
	
		if (eStatus.HasChildNodes)
		{
			for (int j=0; j<eStatus.ChildNodes.Count; j++)
			{
				if(eStatus.ChildNodes[j].Name.Equals("statusTypeId"))
				{
					objTemp.intStatusTypeId=Convert.ToInt32(eStatus.ChildNodes[j].InnerText);
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusName"))
				{
					objTemp.strStatusName=eStatus.ChildNodes[j].InnerText;
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusX"))
				{
					objTemp._x =Convert.ToInt32(eStatus.ChildNodes[j].InnerText);
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusY"))
				{
					objTemp._y =Convert.ToInt32(eStatus.ChildNodes[j].InnerText);
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusJoinRule"))
				{
					objTemp.strJoinRule =eStatus.ChildNodes[j].InnerText;
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusInterfixField"))
				{
					objTemp.strInterfixField =eStatus.ChildNodes[j].InnerText;
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusComExtend"))
				{
					objTemp.strComExtend =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusChildFlowType"))
				{
					objTemp.strChildFlowType =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusChildFlowHint"))
				{
					objTemp.strChildFlowHint =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusChildFlow"))
				{
					objTemp.strChildFlow =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusChangeFlowName"))
				{
					objTemp.strChangeFlowName =eStatus.ChildNodes[j].InnerText;
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusChangeStatusName"))
				{
					objTemp.strChangeStatusName =eStatus.ChildNodes[j].InnerText;
				}
				if(eStatus.ChildNodes[j].Name.Equals("statusAutoFieldList"))
				{
					objTemp.strAutoFieldList =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusAutoRule"))
				{
					objTemp.strAutoRule =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusAutoFieldName"))
				{
					objTemp.strAutoFieldName =eStatus.ChildNodes[j].InnerText;
				}

				if(eStatus.ChildNodes[j].Name.Equals("statusJoinRule2"))
				{
					objTemp.strJoinRule2 =eStatus.ChildNodes[j].InnerText;
				}
			}//end for			
		}//end if
	this.aryStatus.Add(objTemp);
	}//end for

XmlNodeList eDispList=doc.GetElementsByTagName("Disposal");
				
	for(int i=0;i<eDispList.Count;i++)
	{
		FlowDisposal tmpDisp=new FlowDisposal();


		XmlNode eDisposal=eDispList[i];//状态对象
		tmpDisp.dblDisposalId= Convert.ToDouble(eDisposal.Attributes["disposalId"].Value);//状态编号
	
		if (eDisposal.HasChildNodes)
		{
			for (int j=0; j<eDisposal.ChildNodes.Count; j++)
			{
				if(eDisposal.ChildNodes[j].Name.Equals("disposalName"))
				{
					tmpDisp.strDisposalName =eDisposal.ChildNodes[j].InnerText;
				}
				if(eDisposal.ChildNodes[j].Name.Equals("disposalHint"))
				{
					tmpDisp.strDisposalHint =eDisposal.ChildNodes[j].InnerText;
				}

				if(eDisposal.ChildNodes[j].Name.Equals("disposalTransactStatusId"))
				{
					tmpDisp.dblTransactStatusId=Convert.ToDouble(eDisposal.ChildNodes[j].InnerText);
				}

				if(eDisposal.ChildNodes[j].Name.Equals("disposalGroupLimit"))
				{
					tmpDisp.intGroupLimit=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}

				if(eDisposal.ChildNodes[j].Name.Equals("disposalCurStatusId"))
				{
					tmpDisp.dblCurStatusId=Convert.ToDouble(eDisposal.ChildNodes[j].InnerText);
				}
				if(eDisposal.ChildNodes[j].Name.Equals("disposalPreStatusId"))
				{
					tmpDisp.dblPreStatusId=Convert.ToDouble(eDisposal.ChildNodes[j].InnerText);
				}

				if(eDisposal.ChildNodes[j].Name.Equals("disposalX"))
				{
					tmpDisp.intCurX=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}

				if(eDisposal.ChildNodes[j].Name.Equals("disposalY"))
				{
					tmpDisp.intCurY=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}
				if(eDisposal.ChildNodes[j].Name.Equals("X1"))
				{
					tmpDisp.x1=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}
				if(eDisposal.ChildNodes[j].Name.Equals("Y1"))
				{
					tmpDisp.y1=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}
				if(eDisposal.ChildNodes[j].Name.Equals("X2"))
				{
					tmpDisp.x2=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}
				if(eDisposal.ChildNodes[j].Name.Equals("Y2"))
				{
					tmpDisp.y2=Convert.ToInt32(eDisposal.ChildNodes[j].InnerText);
				}
				
			}//end for
		}//end if
		tmpDisp.getFormwh(this.Width,this.Height);
		tmpDisp.setLabelProp();
		this.aryDisposal.Add(tmpDisp);

    }//end for
	this.repaint();

}//end try
				
		
			catch(Exception e)
			{
				string strError="格式错误,转换出错!";
				MessageBox.Show(strError); 
				
			}
		
	
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -