frmBusResult.cs
上传用户:xum6868
上传日期:2009-12-02
资源大小:102k
文件大小:6k
源码类别:

GIS编程

开发平台:

C#

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. namespace MainSystem
  7. {
  8. /// <summary>
  9. /// Summary description for frmBusResult.
  10. /// </summary>
  11. public class frmBusResult : System.Windows.Forms.Form
  12. {
  13. private ArrayList _arrayResult = null;
  14. private frmMain _frmMain = null;
  15. private System.Windows.Forms.Label _label;
  16. private System.Windows.Forms.ListBox _listBox;
  17. /// <summary>
  18. /// Required designer variable.
  19. /// </summary>
  20. private System.ComponentModel.Container components = null;
  21. public frmBusResult(frmMain frm,ArrayList result)
  22. {
  23. _arrayResult = result;
  24. _frmMain = frm;
  25. InitializeComponent();
  26. }
  27. /// <summary>
  28. /// Clean up any resources being used.
  29. /// </summary>
  30. protected override void Dispose( bool disposing )
  31. {
  32. if( disposing )
  33. {
  34. if(components != null)
  35. {
  36. components.Dispose();
  37. }
  38. }
  39. base.Dispose( disposing );
  40. }
  41. #region Windows Form Designer generated code
  42. /// <summary>
  43. /// Required method for Designer support - do not modify
  44. /// the contents of this method with the code editor.
  45. /// </summary>
  46. private void InitializeComponent()
  47. {
  48. this._label = new System.Windows.Forms.Label();
  49. this._listBox = new System.Windows.Forms.ListBox();
  50. this.SuspendLayout();
  51. // 
  52. // _label
  53. // 
  54. this._label.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
  55. this._label.Location = new System.Drawing.Point(8, 8);
  56. this._label.Name = "_label";
  57. this._label.Size = new System.Drawing.Size(224, 27);
  58. this._label.TabIndex = 3;
  59. this._label.Text = "label1";
  60. // 
  61. // _listBox
  62. // 
  63. this._listBox.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
  64. | System.Windows.Forms.AnchorStyles.Left) 
  65. | System.Windows.Forms.AnchorStyles.Right);
  66. this._listBox.Font = new System.Drawing.Font("SimSun", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
  67. this._listBox.Location = new System.Drawing.Point(8, 45);
  68. this._listBox.Name = "_listBox";
  69. this._listBox.Size = new System.Drawing.Size(304, 186);
  70. this._listBox.TabIndex = 2;
  71. this._listBox.DoubleClick += new System.EventHandler(this._listBox_DoubleClick);
  72. // 
  73. // frmBusResult
  74. // 
  75. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  76. this.AutoScroll = true;
  77. this.ClientSize = new System.Drawing.Size(328, 256);
  78. this.Controls.AddRange(new System.Windows.Forms.Control[] {
  79.   this._label,
  80.   this._listBox});
  81. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
  82. this.Name = "frmBusResult";
  83. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  84. this.Text = "乘车路线查询结果";
  85. this.Load += new System.EventHandler(this.frmBusResult_Load);
  86. this.ResumeLayout(false);
  87. }
  88. #endregion
  89. private void frmBusResult_Load(object sender, System.EventArgs e)
  90. {
  91. _label.Text = "总共查询到"+_arrayResult.Count.ToString() +"种方案";  
  92. LoadListBox();
  93. }
  94. private void LoadListBox()
  95. {
  96. _listBox.Items.Clear();  
  97. int index = 1; 
  98. for (int i = 0; i < _arrayResult.Count; i ++)
  99. {
  100. PathNode node = (PathNode)_arrayResult[i];
  101. string str;
  102. str = "第" + index.ToString()  + "方案:";
  103. for (int j = 0; j < node.nSegNumber; j ++)
  104. {
  105. if (j > 0)
  106. str += ",转车,坐";
  107. else
  108. str +="坐";
  109. str += node.szRoutineName[j];
  110. str += "车,从";
  111. str += node.szFromStationName[j];
  112. str += "到";
  113. str += node.szToStationName[j]; 
  114. }
  115. _listBox.Items.Add(str);
  116. index ++;
  117. }
  118. }
  119. private void _listBox_DoubleClick(object sender, System.EventArgs e)
  120. {
  121. if (_listBox.SelectedIndex < 0 )
  122. return;
  123. PathNode node = (PathNode)_arrayResult[_listBox.SelectedIndex];
  124. _frmMain._environment.m_drawLine = new MLine[node.nSegNumber]; 
  125. _frmMain._environment.m_buses = new Buses();
  126. int nCount = 0;
  127. bool bBus = true;
  128. for (int j = 0; j < node.nSegNumber; j ++)
  129. {
  130. MapObjects2.Line  moline = _frmMain._environment.GetLine( node.szRoutineName[j]);
  131. if (null == moline)
  132. {
  133. _frmMain._environment.m_drawLine = null;
  134. _frmMain._environment.m_buses = null;
  135. _frmMain._map.Extent = _frmMain._map.Extent; 
  136. return;
  137. }
  138. MapObjects2.Point pt;
  139. MPoint pt1 = new MPoint();
  140. MPoint pt2 = new MPoint();
  141.  
  142. pt = _frmMain._environment.GetPoint(node.szFromStationName[j]);
  143. if (null == pt)
  144. {
  145. _frmMain._environment.m_drawLine = null;
  146. _frmMain._environment.m_buses = null;
  147. _frmMain._map.Extent = _frmMain._map.Extent; 
  148. return;
  149. }
  150. pt1.x = pt.X ;
  151. pt1.y = pt.Y ;
  152. pt = _frmMain._environment.GetPoint(node.szToStationName[j]);
  153. if (null == pt)
  154. {
  155. _frmMain._environment.m_drawLine = null;
  156. _frmMain._environment.m_buses = null;
  157. _frmMain._map.Extent = _frmMain._map.Extent; 
  158. return;
  159. }
  160. pt2.x = pt.X ;
  161. pt2.y = pt.Y ;
  162. MLine line = _frmMain._environment.CreateLine(moline);
  163. CBusLine busLine = new CBusLine();
  164. _frmMain._environment.m_drawLine[j] = new MLine(); 
  165. busLine.CutLine(line,pt1,pt2,ref _frmMain._environment.m_drawLine[j]); 
  166. if (bBus)
  167. bBus = _frmMain._environment.GetStation(node,j,_frmMain._environment.m_buses,ref nCount); 
  168. }
  169. if (!bBus)
  170. _frmMain._environment.m_buses = null;
  171. else
  172. _frmMain._environment.m_buses.nNum = nCount;  
  173. _frmMain._map.CenterAt(_frmMain._environment.m_drawLine[0].pPoint[0].x ,_frmMain._environment.m_drawLine[0].pPoint[0].y);
  174. _frmMain._map.RefreshLayer(0,_frmMain._map.Extent);    
  175. _frmMain._mapEye.Extent=_frmMain._mapEye.Extent ; 
  176. }
  177. }
  178. }