www.pudn.com > C sharp和MapObjects实现.rar > frmBusResult.cs


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
 
namespace MainSystem 
{ 
	///  
	/// Summary description for frmBusResult. 
	///  
	public class frmBusResult : System.Windows.Forms.Form 
	{ 
		private ArrayList	_arrayResult = null; 
		private frmMain		_frmMain = null; 
 
		private System.Windows.Forms.Label _label; 
		private System.Windows.Forms.ListBox _listBox; 
		///  
		/// Required designer variable. 
		///  
		private System.ComponentModel.Container components = null; 
 
		public frmBusResult(frmMain frm,ArrayList result) 
		{ 
			_arrayResult = result; 
			_frmMain = frm; 
			InitializeComponent(); 
		} 
 
		///  
		/// Clean up any resources being used. 
		///  
		protected override void Dispose( bool disposing ) 
		{ 
			if( disposing ) 
			{ 
				if(components != null) 
				{ 
					components.Dispose(); 
				} 
			} 
			base.Dispose( disposing ); 
		} 
 
		#region Windows Form Designer generated code 
		///  
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor. 
		///  
		private void InitializeComponent() 
		{ 
			this._label = new System.Windows.Forms.Label(); 
			this._listBox = new System.Windows.Forms.ListBox(); 
			this.SuspendLayout(); 
			//  
			// _label 
			//  
			this._label.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134))); 
			this._label.Location = new System.Drawing.Point(8, 8); 
			this._label.Name = "_label"; 
			this._label.Size = new System.Drawing.Size(224, 27); 
			this._label.TabIndex = 3; 
			this._label.Text = "label1"; 
			//  
			// _listBox 
			//  
			this._listBox.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  
				| System.Windows.Forms.AnchorStyles.Left)  
				| System.Windows.Forms.AnchorStyles.Right); 
			this._listBox.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134))); 
			this._listBox.Location = new System.Drawing.Point(8, 45); 
			this._listBox.Name = "_listBox"; 
			this._listBox.Size = new System.Drawing.Size(304, 186); 
			this._listBox.TabIndex = 2; 
			this._listBox.DoubleClick += new System.EventHandler(this._listBox_DoubleClick); 
			//  
			// frmBusResult 
			//  
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
			this.AutoScroll = true; 
			this.ClientSize = new System.Drawing.Size(328, 256); 
			this.Controls.AddRange(new System.Windows.Forms.Control[] { 
																		  this._label, 
																		  this._listBox}); 
			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; 
			this.Name = "frmBusResult"; 
			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 
			this.Text = "乘车路线查询结果"; 
			this.Load += new System.EventHandler(this.frmBusResult_Load); 
			this.ResumeLayout(false); 
 
		} 
		#endregion 
 
		private void frmBusResult_Load(object sender, System.EventArgs e) 
		{ 
			_label.Text = "总共查询到"+_arrayResult.Count.ToString() +"种方案";   
			LoadListBox(); 
		} 
 
		private void LoadListBox() 
		{ 
			_listBox.Items.Clear();   
			int index = 1;  
			for (int i = 0; i < _arrayResult.Count; i ++) 
			{ 
				PathNode node = (PathNode)_arrayResult[i]; 
				string str;				 
				str = "第" + index.ToString()  + "方案:"; 
 
				for (int j = 0; j < node.nSegNumber; j ++) 
				{ 
					if (j > 0) 
						str += ",转车,坐"; 
					else 
						str +="坐"; 
					 
					str += node.szRoutineName[j]; 
					str += "车,从"; 
					str += node.szFromStationName[j]; 
					str += "到"; 
					str += node.szToStationName[j];  
				}		 
 
				_listBox.Items.Add(str); 
				index ++; 
			} 
		} 
 
		private void _listBox_DoubleClick(object sender, System.EventArgs e) 
		{ 
			if (_listBox.SelectedIndex < 0 ) 
				return; 
 
			PathNode node = (PathNode)_arrayResult[_listBox.SelectedIndex]; 
			_frmMain._environment.m_drawLine = new MLine[node.nSegNumber];  
			 
			_frmMain._environment.m_buses = new Buses(); 
			int nCount = 0; 
			bool bBus = true; 
 
			for (int j = 0; j < node.nSegNumber; j ++) 
			{ 
				MapObjects2.Line  moline = _frmMain._environment.GetLine( node.szRoutineName[j]); 
				if (null == moline) 
				{ 
					_frmMain._environment.m_drawLine = null; 
					_frmMain._environment.m_buses = null; 
 
					_frmMain._map.Extent = _frmMain._map.Extent;  
					return; 
				} 
				MapObjects2.Point pt; 
				MPoint pt1 = new MPoint(); 
				MPoint pt2 = new MPoint(); 
  
				pt = _frmMain._environment.GetPoint(node.szFromStationName[j]); 
				if (null == pt) 
				{ 
					_frmMain._environment.m_drawLine = null; 
					_frmMain._environment.m_buses = null; 
					_frmMain._map.Extent = _frmMain._map.Extent;  
					return; 
				} 
				pt1.x = pt.X ; 
				pt1.y = pt.Y ; 
 
				pt = _frmMain._environment.GetPoint(node.szToStationName[j]); 
				if (null == pt) 
				{ 
					_frmMain._environment.m_drawLine = null; 
					_frmMain._environment.m_buses = null; 
					_frmMain._map.Extent = _frmMain._map.Extent;  
					return; 
				} 
 
				pt2.x = pt.X ; 
				pt2.y = pt.Y ; 
 
				MLine line = _frmMain._environment.CreateLine(moline); 
				CBusLine busLine = new CBusLine();				 
				_frmMain._environment.m_drawLine[j] = new MLine();  
				busLine.CutLine(line,pt1,pt2,ref _frmMain._environment.m_drawLine[j]);  
 
				if (bBus) 
					bBus = _frmMain._environment.GetStation(node,j,_frmMain._environment.m_buses,ref nCount); 				 
			}	 
	 
			if (!bBus) 
				_frmMain._environment.m_buses = null; 
			else 
				_frmMain._environment.m_buses.nNum = nCount;   
 
			_frmMain._map.CenterAt(_frmMain._environment.m_drawLine[0].pPoint[0].x ,_frmMain._environment.m_drawLine[0].pPoint[0].y); 
			_frmMain._map.RefreshLayer(0,_frmMain._map.Extent);     
			_frmMain._mapEye.Extent=_frmMain._mapEye.Extent ;  
		} 
 
	} 
}