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

📄 flowmap.cs

📁 c#定义XML
💻 CS
📖 第 1 页 / 共 3 页
字号:
/*
 *author: l_dragon  email:l_dragon2000@163.com
 *last update:2003/04/03
 * */
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Xml;


namespace gdiFlow
{
	/// <summary>
	/// FlowMap 的摘要说明。
	/// </summary>
	public class FlowMap : System.Windows.Forms.UserControl
	{
			private System.ComponentModel.IContainer components;
		//7种状态对应菜单
		private System.Windows.Forms.ContextMenu menuStatus;
		private System.Windows.Forms.MenuItem menuAdd;
		private System.Windows.Forms.MenuItem menuBegin;
		private System.Windows.Forms.MenuItem menuCommon;
		private System.Windows.Forms.MenuItem menuChild;
		private System.Windows.Forms.MenuItem menuAuto;
		private System.Windows.Forms.MenuItem menuBranch;
		private System.Windows.Forms.MenuItem menuTogether;
		private System.Windows.Forms.MenuItem menuGoto;
		private System.Windows.Forms.MenuItem menuEnd;		
		//状态处理对应的操作菜单
		private System.Windows.Forms.ContextMenu  menuDelSet;
		private System.Windows.Forms.MenuItem menuDelStatus;
		private System.Windows.Forms.MenuItem menuSetStatus;
		private  System.Collections.ArrayList  aryStatus=new ArrayList();//存放所有status对象,
		private  System.Collections.ArrayList aryDisposal=new ArrayList();//存放所有Disposal对象		
		public  FlowStatus gStatus;//在Form中被选中的唯一状态;
		private FlowStatus gFrom=null,gTo=null;//画线时的from 和 to
		private int intMouseX;//鼠标按下时坐标x值
		private int intMouseY;//鼠标按下时坐标Y值	
		private bool blCtrlDown=false;//ctrl键是否按下
		private int intStatusW=90;//状态对象矩形的宽度;
		private int intStautsH=45;//状态对象矩形的高度;

		/*
		 * 状态类型ID,STATUS_TYPE_ID	 
		 *  0	开始
			1	结束
			2	普通
			3	子流
			4	自动
			5	分流
			6	合流
			7	转流程
		*/
		private int intStatusType;//状态类型

		

		public FlowMap()
		{
			// 该调用是 Windows.Forms 窗体设计器所必需的。
			InitializeComponent();			
		
		}

		/// <summary> 
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Component Designer generated code
		/// <summary> 
		/// 设计器支持所需的方法 - 不要使用代码编辑器 
		/// 修改此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{			
			// 
			// FlowMap
			// 
			this.Name = "FlowMap";
			this.Size = new System.Drawing.Size(512, 344);
			this.Load += new System.EventHandler(this.FlowMap_Load);
			this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.myMouseUp);
			this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.myKeyUp);
			this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.myKeyDown);
			this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.myMouseMove);
			this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.myMouseDown);

		}
		#endregion

		

		private void menuBegin_Click(object sender, System.EventArgs e)
		{
		
			this.intStatusType=0;
			addStatus();
		}

		private void menuCommon_Click(object sender, System.EventArgs e)
		{
		
			this.intStatusType=2;
			addStatus();
		}

		private void menuChild_Click(object sender, System.EventArgs e)
		{
			
			this.intStatusType=3;
			addStatus();
			
		}
		private void menuAuto_Click(object sender, System.EventArgs e)
		{
		
			this.intStatusType=4;
			addStatus();
		}

		private void menuBranch_Click(object sender, System.EventArgs e)
		{
			
			this.intStatusType=5;
			addStatus();
		}

		private void menuTogether_Click(object sender, System.EventArgs e)
		{
		
			this.intStatusType=6;
			addStatus();
		}

		private void menuGoto_Click(object sender, System.EventArgs e)
		{
			
			this.intStatusType=7;
			addStatus();
			
		}

		private void menuEnd_Click(object sender, System.EventArgs e)
		{
			
			this.intStatusType=1;
			addStatus();
			
		}
		public void addStatus()
		{
			//增加状态按钮按下,新建一个状态,在状态列表中增加一个状态对象.
			
				//如果状态对象列表中有已经被删除的状态对象,
				//将其在新位置重新显示
				for(int i=0;i<aryStatus.Count;i++)
				{ 
					FlowStatus objTempS=(FlowStatus)aryStatus[i];
					if(objTempS.blDisplay==false)
					{					  
					  objTempS._x=this.intMouseX;
					  objTempS._y=this.intMouseY;					
					  objTempS.intStatusTypeId=this.intStatusType;
					  objTempS.blDisplay=true;
					  int j=i+1;
					  objTempS.dblStatusId=Convert.ToDouble(j); 
					  objTempS.strStatusName="状态"+Convert.ToString(j);
					  repaint();
					  return;
					}
				}
			
			FlowStatus objStatus=new FlowStatus(intMouseX,intMouseY,this.intStatusW,this.intStautsH);
			objStatus.intStatusTypeId=this.intStatusType; 
			int intI=aryStatus.Count+1;
			objStatus.dblStatusId=Convert.ToDouble(intI); 
			objStatus.strStatusName="状态"+Convert.ToString(intI); 
			this.aryStatus.Add(objStatus); 	
		    repaint();				
		}
		//删除一个状态(status)对象
		private void menuDelStatus_Click(object sender, System.EventArgs e)
		{
			if(this.gStatus!=null)
			{
				if(gStatus.intStatusTypeId==0)
				{
					MessageBox.Show("开始状态不能删除!"); 
					return;
				}
	
				if(gStatus.intStatusTypeId==1)
				{
					MessageBox.Show("结束状态不能删除!"); 	
					return;
				}
				double tempStatusId=gStatus.dblStatusId;
			 
					int j=aryDisposal.Count;		
					for(int i=0;i<j;i++)
					{   
						FlowDisposal objDisp=(FlowDisposal)aryDisposal[i];
						if(objDisp.dblCurStatusId==tempStatusId || objDisp.dblPreStatusId==tempStatusId)
						{
						 objDisp.clearProperty();
						}			
					}
					this.gStatus.clearProperty();
					this.gStatus=null;			
			
			}


		}

		private void menuSetStatus_Click(object sender, System.EventArgs e)
		{
			frmStatusSet frmSet=new frmStatusSet();
			frmSet.setThisStatus(this.gStatus);	
			frmSet.setAryStatus(this.aryStatus);
			frmSet.setAryDisposal(this.aryDisposal); 
			frmSet.MaximizeBox=false;
			frmSet.MinimizeBox=false;	
			frmSet.ShowDialog(); 
			repaint();
		}
		//显示增加时的右键菜单
		public void showMenu(MouseEventArgs ex)
		{
			this.intMouseX=ex.X;
			this.intMouseY=ex.Y;
			this.menuStatus = new System.Windows.Forms.ContextMenu();
			this.menuAdd = new System.Windows.Forms.MenuItem();
			this.menuBegin = new System.Windows.Forms.MenuItem();
			this.menuCommon = new System.Windows.Forms.MenuItem();
			this.menuChild = new System.Windows.Forms.MenuItem();
			this.menuAuto = new System.Windows.Forms.MenuItem();
			this.menuBranch = new System.Windows.Forms.MenuItem();
			this.menuTogether = new System.Windows.Forms.MenuItem();
			this.menuGoto = new System.Windows.Forms.MenuItem();
			this.menuEnd = new System.Windows.Forms.MenuItem();
			// 
			// menuStatus
			// 
			this.menuStatus.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					   this.menuAdd});
			// 
			// menuAdd
			// 
			this.menuAdd.Index = 0;
			this.menuAdd.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					this.menuBegin,
																					this.menuCommon,
																					this.menuChild,
																					this.menuAuto,
																					this.menuBranch,
																					this.menuTogether,
																					this.menuGoto,
																					this.menuEnd});
			this.menuAdd.Text = "添加状态";
			// 
			// menuBegin
			// 
			this.menuBegin.Index = 0;
			this.menuBegin.Text = "开始";
			this.menuBegin.Click += new System.EventHandler(this.menuBegin_Click);
			// 
			// menuCommon
			// 
			this.menuCommon.Index = 1;
			this.menuCommon.Text = "普通";
			this.menuCommon.Click += new System.EventHandler(this.menuCommon_Click);
			// 
			// menuChild
			// 
			this.menuChild.Index = 2;
			this.menuChild.Text = "子流";
			this.menuChild.Click += new System.EventHandler(this.menuChild_Click);
			// 
			// menuAuto
			// 
			this.menuAuto.Index = 3;
			this.menuAuto.Text = "自动";
			this.menuAuto.Click += new System.EventHandler(this.menuAuto_Click);
			// 
			// menuBranch
			// 
			this.menuBranch.Index = 4;
			this.menuBranch.Text = "分流";
			this.menuBranch.Click += new System.EventHandler(this.menuBranch_Click);
			// 
			// menuTogether
			// 
			this.menuTogether.Index = 5;
			this.menuTogether.Text = "合流";
			this.menuTogether.Click += new System.EventHandler(this.menuTogether_Click);
			// 
			// menuGoto
			// 
			this.menuGoto.Index = 6;
			this.menuGoto.Text = "转流程";
			this.menuGoto.Click += new System.EventHandler(this.menuGoto_Click);
			// 
			// menuEnd
			// 
			this.menuEnd.Index = 7;
			this.menuEnd.Text = "结束";
			this.menuEnd.Click += new System.EventHandler(this.menuEnd_Click);
			this.ContextMenu=  this.menuStatus;
		}


		//设置处理的右键菜单
		public void showStatusMenu()		
		{
			
			this.menuDelSet=new System.Windows.Forms.ContextMenu();
			this.menuDelStatus  =new  System.Windows.Forms.MenuItem() ;
			this.menuSetStatus =new  System.Windows.Forms.MenuItem();
			this.menuDelStatus.Text="删除";
			this.menuDelStatus.Click += new System.EventHandler(this.menuDelStatus_Click);
			this.menuSetStatus.Text="属性";
			this.menuSetStatus.Click += new System.EventHandler(this.menuSetStatus_Click);
			this.menuDelSet.MenuItems.Add(menuDelStatus);
			this.menuDelSet.MenuItems.Add("-");   
			this.menuDelSet.MenuItems.Add(menuSetStatus);				this.ContextMenu=this.menuDelSet;		    
		}
		public void myMouseDown(object sender, MouseEventArgs ex)
		{  
			int intClickCount=ex.Clicks;
			
			
			if(ex.Button == MouseButtons.Left)
			{
					if(intClickCount==1)
			   {
				   this.drawMouseObjs(ex,1);
			   }
				if(intClickCount==2 )//鼠标左键双击
				{
					this.gStatus=this.SelectStatus(ex.X,ex.Y);//选中了某状态对象 
					if(gStatus!=null)
					{
						
						frmStatusSet frmSet=new frmStatusSet();
						frmSet.setThisStatus(this.gStatus);
						frmSet.setAryStatus(this.aryStatus);
						frmSet.setAryDisposal(this.aryDisposal); 
						frmSet.MaximizeBox=false;
						frmSet.MinimizeBox=false;					
						frmSet.ShowDialog(); 
						repaint();
						
						
					}
				}
			}			

			if(ex.Button == MouseButtons.Right)//鼠标右键
			{
				this.gStatus=this.SelectStatus(ex.X,ex.Y);//选中了某状态对象 
				if(gStatus!=null)
				{
					this.showStatusMenu(); //显示设置当前状态对象的菜单
				}
				else
				{
					showMenu(ex);//显示增加对象的菜单
				}
			}		
			
		}
		public void myMouseMove(object sender, MouseEventArgs ex)
		{
			if(ex.Button == MouseButtons.Left )
			{   
				this.drawMouseObjs(ex,2);
			
			}

		
		}
		public void myMouseUp(object sender, MouseEventArgs ex)
		{
			if(ex.Button == MouseButtons.Left )
			{   
				this.drawMouseObjs(ex,3);			
			}	
		}
		public void myKeyDown(object sender, KeyEventArgs  ex)
		{
		
			if(ex.Control==true)//键盘中ctrl键被按下
			{
				int intCount=this.aryStatus.Count;
				if(intCount==0)
				{ 
					return;

⌨️ 快捷键说明

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