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


using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
 
namespace MainSystem 
{ 
	///  
	/// Summary description for frmStation. 
	///  
	public class frmStation : System.Windows.Forms.Form 
	{ 
		private frmMain	_frmMain; 
		private string	_szStaName; 
 
		private System.Windows.Forms.Button button1; 
		private System.Windows.Forms.Label _label2; 
		private System.Windows.Forms.Label _label_Statation; 
		private System.Windows.Forms.ListBox _listBox; 
		///  
		/// Required designer variable. 
		///  
		private System.ComponentModel.Container components = null; 
 
		public frmStation(frmMain frmMain, string szStaName) 
		{ 
			_frmMain = frmMain; 
			_szStaName = szStaName; 
			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.button1 = new System.Windows.Forms.Button(); 
			this._label2 = new System.Windows.Forms.Label(); 
			this._label_Statation = new System.Windows.Forms.Label(); 
			this._listBox = new System.Windows.Forms.ListBox(); 
			this.SuspendLayout(); 
			//  
			// button1 
			//  
			this.button1.Enabled = false; 
			this.button1.Location = new System.Drawing.Point(152, 8); 
			this.button1.Name = "button1"; 
			this.button1.Size = new System.Drawing.Size(56, 24); 
			this.button1.TabIndex = 7; 
			this.button1.Text = "定位"; 
			this.button1.Click += new System.EventHandler(this.button1_Click); 
			//  
			// _label2 
			//  
			this._label2.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
				| System.Windows.Forms.AnchorStyles.Right); 
			this._label2.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134))); 
			this._label2.Location = new System.Drawing.Point(8, 32); 
			this._label2.Name = "_label2"; 
			this._label2.Size = new System.Drawing.Size(200, 24); 
			this._label2.TabIndex = 6; 
			//  
			// _label_Statation 
			//  
			this._label_Statation.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)  
				| System.Windows.Forms.AnchorStyles.Right); 
			this._label_Statation.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134))); 
			this._label_Statation.Location = new System.Drawing.Point(8, 8); 
			this._label_Statation.Name = "_label_Statation"; 
			this._label_Statation.Size = new System.Drawing.Size(200, 24); 
			this._label_Statation.TabIndex = 5; 
			//  
			// _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.ItemHeight = 12; 
			this._listBox.Location = new System.Drawing.Point(8, 56); 
			this._listBox.Name = "_listBox"; 
			this._listBox.Size = new System.Drawing.Size(200, 220); 
			this._listBox.TabIndex = 4; 
			this._listBox.DoubleClick += new System.EventHandler(this._listBox_DoubleClick); 
			this._listBox.SelectedIndexChanged += new System.EventHandler(this._listBox_SelectedIndexChanged); 
			//  
			// frmStation 
			//  
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
			this.ClientSize = new System.Drawing.Size(224, 277); 
			this.Controls.AddRange(new System.Windows.Forms.Control[] { 
																		  this.button1, 
																		  this._label2, 
																		  this._label_Statation, 
																		  this._listBox}); 
			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; 
			this.MaximizeBox = false; 
			this.MinimizeBox = false; 
			this.Name = "frmStation"; 
			this.Text = "车站信息"; 
			this.TopMost = true; 
			this.Load += new System.EventHandler(this.frmStation_Load); 
			this.ResumeLayout(false); 
 
		} 
		#endregion 
 
		//功能:单击按钮,定位指定的公交路线 
		private void button1_Click(object sender, System.EventArgs e) 
		{ 
			string szName = _listBox.Text;			//公交路线名称 
			string szLayer = CEnvironment.BUSLINE_LAYERNAME;//公交路线所在图层名称 
 
			MapObjects2.MapLayer ly = (MapObjects2.MapLayer)_frmMain._map.Layers.Item((object)szLayer); 
			if (ly == null) 
				return; 
 
			MapObjects2.Recordset rs = ly.SearchExpression("名称 like '"+szName +"'");; 
			if (null == rs) 
			{ 
				MessageBox.Show("地图上没有这条公交线路!","北京市地理信息公众查询系统",MessageBoxButtons.OK,MessageBoxIcon.Error); 
				return; 
			} 
			 
			rs.MoveFirst();  
			if (rs.EOF) 
			{ 
				MessageBox.Show("地图上没有这条公交线路!","北京市地理信息公众查询系统",MessageBoxButtons.OK,MessageBoxIcon.Error); 
				return; 
			} 
 
			//在地图找到了这条线路,画出来 
			//首先定位 
			MapObjects2.Point pt; 
			MapObjects2.Line line = (MapObjects2.Line)rs.Fields.Item("shape").Value; 
			pt = line.Extent.Center; 
					 
			if (!_frmMain.IsWithin(_frmMain._map.Extent, pt))   
			{ 
				_frmMain._map.CenterAt(pt.X,pt.Y );    
			} 
 
			//其次设置_environment.m_drawLine和_environment.m_buses 
			MapObjects2.Points	pts; 
			pts = (MapObjects2.Points)line.Parts.Item(0); 
 
			_frmMain._environment.m_drawLine = null; 
			_frmMain._environment.m_drawLine = new MLine[1]; 
			_frmMain._environment.m_drawLine[0] = new MLine(); 
			_frmMain._environment.m_drawLine[0].nPointNumber = pts.Count; 
			_frmMain._environment.m_drawLine[0].pPoint = new MPoint[pts.Count]; 
 
			for (int i = 0; i < pts.Count; i ++) 
			{ 
				pt = (MapObjects2.Point)pts.Item(i); 
				_frmMain._environment.m_drawLine[0].pPoint[i] = new MPoint(); 
				_frmMain._environment.m_drawLine[0].pPoint[i].x = pt.X; 
				_frmMain._environment.m_drawLine[0].pPoint[i].y = pt.Y;							 
			} 
 
			_frmMain._environment.m_buses = new Buses(); 
			int nCount = 0; 
			if(!_frmMain._environment.GetStation(szName, _frmMain._environment.m_buses,ref nCount))  
				_frmMain._environment.m_buses = null; 
			else 
				_frmMain._environment.m_buses.nNum = nCount;  
 
			//闪烁,重画 
			_frmMain._map.FlashShape(rs.Fields.Item("shape").Value, 4); 
			_frmMain._map.Extent = _frmMain._map.Extent; 	 
		} 
 
		private void frmStation_Load(object sender, System.EventArgs e) 
		{ 
			this._label_Statation.Text  = " 车站名称:"+this._szStaName; 
			this._label2.Text = "经过"+this._szStaName+"的公交线路:"; 
			LoadListBox(); 
		} 
 
		private void LoadListBox() 
		{ 
			_listBox.Items.Clear();   
			if ("" == _szStaName) 
				return ; 
			 
			System.Data.DataTable typeTbl = this._frmMain._environment.m_dataSet.Tables["公交车站路线"]; 
			string szFilter = "站名='"+_szStaName+"'"; 
			if (_frmMain._environment.m_szBusFilter != "") 
			{ 
				szFilter += " And "; 
				szFilter += _frmMain._environment.m_szBusFilter; 
			} 
 
			System.Data.DataRow[] rowstypes = typeTbl.Select(szFilter); 
			foreach (System.Data.DataRow myRow in rowstypes) 
			{ 
				this._listBox.Items.Add(myRow["线路名"]);   
			} 
		} 
 
		private void _listBox_SelectedIndexChanged(object sender, System.EventArgs e) 
		{ 
			if (_listBox.Text != "") 
				button1.Enabled = true; 
			else 
				button1.Enabled = false; 
		} 
 
		private void _listBox_DoubleClick(object sender, System.EventArgs e) 
		{ 
			if (_listBox.Text == "") 
				return; 
 
			frmLine frm = new frmLine(this._frmMain,_listBox.Text ); 
			this.Visible = false; 
			frm.ShowDialog(this._frmMain);		 
			this.Close();  
		} 
 
 
	} 
}