FormHOZMain.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. using FileManager;
  2. using MeasureData;
  3. using MeasureThread;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Data;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Runtime.InteropServices;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Forms;
  14. namespace HOZProject
  15. {
  16. public partial class FormHOZMain : Form
  17. {
  18. #region 成员变量
  19. private BackgroundWorker m_BackgroundWorker;// 申明后台对象
  20. /// <summary>
  21. /// 测量文件
  22. /// </summary>
  23. public MeasureFile m_MeasureFile;
  24. /// 测量线程
  25. public Measure m_Ms;
  26. #endregion
  27. #region 构造函数
  28. public FormHOZMain()
  29. {
  30. InitializeComponent();
  31. m_BackgroundWorker = new BackgroundWorker(); // 实例化后台对象
  32. m_BackgroundWorker.WorkerReportsProgress = true; // 设置可以通告进度
  33. m_BackgroundWorker.WorkerSupportsCancellation = true; // 设置可以取消
  34. m_BackgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
  35. m_BackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
  36. m_BackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
  37. LogManager.InitManulLog();
  38. }
  39. #endregion
  40. #region 测量线程
  41. void DoWork(object sender, DoWorkEventArgs e)
  42. {
  43. m_Ms = new Measure();
  44. m_Ms.InitMeas(m_MeasureFile);
  45. m_Ms.SendThreadStatus += new ThreadStatusHandler(displayMessage); //注册事件
  46. m_Ms.SendCutHolesStatus += new CutHolesStatusHandler(displayCutHoleMessage); //注册事件
  47. //自动测量的全过程
  48. m_Ms.DoMeasure();
  49. //定位
  50. //切割
  51. //分析位置
  52. //截面
  53. }
  54. public void displayMessage(object sender, ThreadStatusEventArgs e)
  55. {
  56. //主界面显示内容
  57. this.BeginInvoke((Action)delegate
  58. {
  59. this.listmsg.Items.Add(e.Time.ToString() + e.State);
  60. });
  61. }
  62. public void displayCutHoleMessage(object sender, CutHolesStatusEventArgs e)
  63. {
  64. //主界面显示内容
  65. this.BeginInvoke((Action)delegate
  66. {
  67. //this.listmsg.Items.Add(e.HoleName.ToString() + e.State);
  68. ChangeCutHoleState(e.HoleName.ToString(), Convert.ToInt32(e.State));
  69. });
  70. }
  71. void UpdateProgress(object sender, ProgressChangedEventArgs e)
  72. {
  73. }
  74. void CompletedWork(object sender, RunWorkerCompletedEventArgs e)
  75. {
  76. }
  77. #endregion
  78. private void FormHOZMain_Load(object sender, EventArgs e)
  79. {
  80. //加载控件的点击事件
  81. this.Click += new EventHandler(FormHOZMain_Click);
  82. plFill.Click += new EventHandler(FormHOZMain_Click);
  83. plTop.Click += new EventHandler(FormHOZMain_Click);
  84. plLeft.Click += new EventHandler(FormHOZMain_Click);
  85. plLeftContent.Click += new EventHandler(FormHOZMain_Click);
  86. //加载窗口移动事件
  87. this.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  88. //plFill.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  89. //plTop.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  90. //plLeft.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  91. //plLeftContent.MouseDown += new MouseEventHandler(FormHOZMain_MouseDown);
  92. //新建
  93. NewCreate();
  94. }
  95. public void CreateCutHoleList(List<CutHole> ListCutHole)
  96. {
  97. //清空左侧Panel中的切孔控件
  98. plLeftContent.Controls.Clear();
  99. for (int i = ListCutHole.Count-1;i>=0; i--)
  100. {
  101. UControl_CutHole ucCutHole = new UControl_CutHole(this);
  102. ucCutHole.Dock = DockStyle.Top;
  103. ucCutHole.CutHoleName = ListCutHole[i].HoleName;
  104. plLeftContent.Controls.Add(ucCutHole);
  105. }
  106. }
  107. private void FormHOZMain_Click(object sender, EventArgs e)
  108. {
  109. if (plProcess.Visible)
  110. {
  111. plProcess.Visible = false;
  112. }
  113. }
  114. #region 窗体 最大化 最小化 关闭 按钮事件
  115. private void pbMin_MouseEnter(object sender, EventArgs e)
  116. {
  117. this.pbMin.BackgroundImage = global::HOZProject.Properties.Resources.Min_Blue;
  118. }
  119. private void pbMin_MouseLeave(object sender, EventArgs e)
  120. {
  121. this.pbMin.BackgroundImage = global::HOZProject.Properties.Resources.Min_Gray;
  122. }
  123. private void pbClose_MouseEnter(object sender, EventArgs e)
  124. {
  125. this.pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_Red;
  126. }
  127. private void pbClose_MouseLeave(object sender, EventArgs e)
  128. {
  129. this.pbClose.BackgroundImage = global::HOZProject.Properties.Resources.exit_Gray;
  130. }
  131. private void pbClose_Click(object sender, EventArgs e)
  132. {
  133. this.Close();
  134. }
  135. private void pbMin_Click(object sender, EventArgs e)
  136. {
  137. this.WindowState = FormWindowState.Minimized;
  138. }
  139. private void pbMax_Click(object sender, EventArgs e)
  140. {
  141. if (this.WindowState == FormWindowState.Maximized)
  142. {
  143. this.WindowState = FormWindowState.Normal;
  144. }
  145. else
  146. {
  147. this.WindowState = FormWindowState.Maximized;
  148. }
  149. //窗体据中
  150. this.StartPosition = FormStartPosition.CenterScreen;
  151. }
  152. #endregion
  153. #region 新建、保存、打开、初始化、查看日志
  154. private void pbNew_Click(object sender, EventArgs e)
  155. {
  156. NewCreate();
  157. }
  158. private void NewCreate()
  159. {
  160. m_MeasureFile = new MeasureFile();
  161. if (!m_MeasureFile.New())
  162. {
  163. return;
  164. }
  165. else
  166. {
  167. //MessageBox.Show("新建测量文件成功。");
  168. }
  169. }
  170. private void pbSave_Click(object sender, EventArgs e)
  171. {
  172. if (m_MeasureFile == null)
  173. {
  174. MessageBox.Show("请新建一个测量文件");
  175. }
  176. else
  177. {
  178. m_MeasureFile.Save();
  179. }
  180. }
  181. private void pbOpen_Click(object sender, EventArgs e)
  182. {
  183. }
  184. private void pbInit_Click(object sender, EventArgs e)
  185. {
  186. Form form = new Form();
  187. form.StartPosition = FormStartPosition.CenterScreen;
  188. UControl_Init uControl_Init = new UControl_Init(this);
  189. form.FormBorderStyle = FormBorderStyle.None;
  190. form.Width = uControl_Init.Width;
  191. form.Height = uControl_Init.Height;
  192. form.Controls.Add(uControl_Init);
  193. form.ShowDialog();
  194. }
  195. private void pbLog_Click(object sender, EventArgs e)
  196. {
  197. Form form = new Form();
  198. form.StartPosition = FormStartPosition.CenterScreen;
  199. UControl_Log uControl_Log = new UControl_Log();
  200. form.FormBorderStyle = FormBorderStyle.None;
  201. form.Width = uControl_Log.Width;
  202. form.Height = uControl_Log.Height;
  203. form.Controls.Add(uControl_Log);
  204. form.ShowDialog();
  205. }
  206. #endregion
  207. #region 开始、结束线程事件
  208. private void pbStart_Click(object sender, EventArgs e)
  209. {
  210. if (m_MeasureFile == null)
  211. {
  212. MessageBox.Show("请新建一个测量文件");
  213. //listmsg.Items.Clear();
  214. }
  215. else
  216. {
  217. if (m_BackgroundWorker.IsBusy)
  218. {
  219. MessageBox.Show("线程已经运行");
  220. return;
  221. }
  222. m_BackgroundWorker.RunWorkerAsync(this);
  223. }
  224. }
  225. private void pbStop_Click(object sender, EventArgs e)
  226. {
  227. if (m_BackgroundWorker.IsBusy)
  228. {
  229. m_BackgroundWorker.CancelAsync();
  230. }
  231. }
  232. #endregion
  233. /// <summary>
  234. /// 修改切孔状态
  235. /// </summary>
  236. /// <param name="cutHoleCode"></param>
  237. /// <param name="State"></param>
  238. private void ChangeCutHoleState(string CutHoleName, int State)
  239. {
  240. foreach (Control item in plLeftContent.Controls)
  241. {
  242. if (item is UserControl)
  243. {
  244. UControl_CutHole cutHole = (UControl_CutHole)item;
  245. if (cutHole.CutHoleName == CutHoleName)
  246. {
  247. Button btnCutHole = (Button)cutHole.Controls.Find("btnCutHole", false)[0];
  248. switch (State)
  249. {
  250. //开始运行
  251. case (int)ThreadState.InProcess:
  252. btnCutHole.BackColor = Color.Yellow;
  253. break;
  254. //完成
  255. case (int)ThreadState.Success:
  256. btnCutHole.BackColor = Color.LawnGreen;
  257. break;
  258. //错误
  259. case (int)ThreadState.Failed:
  260. btnCutHole.BackColor = Color.Red;
  261. break;
  262. }
  263. break;
  264. }
  265. }
  266. }
  267. }
  268. /// <summary>
  269. /// 显示切孔处理流程中信息
  270. /// </summary>
  271. private void ShowProcessInfo()
  272. {
  273. }
  274. #region 拖动无窗体的控件
  275. [DllImport("user32.dll")]//拖动无窗体的控件
  276. public static extern bool ReleaseCapture();
  277. [DllImport("user32.dll")]
  278. public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
  279. public const int WM_SYSCOMMAND = 0x0112;
  280. public const int SC_MOVE = 0xF010;
  281. public const int HTCAPTION = 0x0002;
  282. private void FormHOZMain_MouseDown(object sender, MouseEventArgs e)
  283. {
  284. if (this.WindowState == FormWindowState.Normal)
  285. {
  286. //拖动窗体
  287. ReleaseCapture();
  288. SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
  289. }
  290. }
  291. #endregion
  292. }
  293. }