版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

630 rivejä
28 KiB

  1. using MaiMuAOI.SysCtrl;
  2. using MaiMuAOI.SysUI.ProcessStep.Prop;
  3. using MaiMuAOI.SysUI.ProductAndStep;
  4. using Newtonsoft.Json.Linq;
  5. using OpenCvSharp.Flann;
  6. using ProductionControl.UI;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading;
  15. using System.Threading.Tasks;
  16. using System.Windows.Forms;
  17. namespace MaiMuAOI.SysUI.ProcessStep
  18. {
  19. public partial class StepProcessFrm : Form
  20. {
  21. Service.StepService service = new Service.StepService();
  22. Models.Step model = new Models.Step();
  23. //工序库参数
  24. string LibprocessCode;
  25. TensionProp _libTensionProp;
  26. ThicknessProp _libThicknessProp;
  27. LensProp _libLensProp;
  28. LightProp _libLightProp;
  29. MarkProp _libMarkProp;
  30. PointTestProp _libPointTestProp;
  31. SizeDefectProp _libSizeDefectProp;
  32. ForProp _libForProp;
  33. //流程参数
  34. TensionProp _ProcessTensionProp;
  35. ThicknessProp _ProcessThicknessProp;
  36. LensProp _ProcessLensProp;
  37. LightProp _ProcessLightProp;
  38. MarkProp _ProcessMarkProp;
  39. PointTestProp _ProcessPointTestProp;
  40. SizeDefectProp _ProcessSizeDefectProp;
  41. ForProp _ProcessForProp;
  42. SynchronizationContext SyncContext = null;
  43. public StepProcessFrm(Models.Step m = null)
  44. {
  45. InitializeComponent();
  46. UIStyle.SetUIStyle(this);
  47. this.uiTitel1.FatherForm = this;
  48. dataGridView1.AutoGenerateColumns = false;
  49. dataGridView2.AutoGenerateColumns = false;
  50. //显示行号与列宽度自动调整
  51. dataGridView2.RowHeadersVisible = true;
  52. dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
  53. dataGridView2.RowPostPaint += (sender, e) =>
  54. {
  55. SysMgr.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e);
  56. };
  57. dataGridView1.DefaultCellStyle.ForeColor = Color.Black;
  58. dataGridView2.DefaultCellStyle.ForeColor = Color.Black;
  59. //获取UI线程同步上下文
  60. SyncContext = SynchronizationContext.Current;
  61. if (m == null)
  62. model.ProcessList = new List<Models.StepProcess>();
  63. else
  64. model = m;
  65. }
  66. private void InitDataView()
  67. {
  68. this.Cursor = Cursors.WaitCursor;
  69. dataGridView1.Columns.Add("colCode", "code");
  70. //DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
  71. //col.Name = "colName";
  72. //col.HeaderText = "工序";
  73. //dataGridView1.Columns.Add(col);
  74. dataGridView1.Columns.Add("colName", "工序");
  75. dataGridView1.Columns[0].Visible = false;
  76. dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
  77. foreach (var item in SysMgr.ProcessType)
  78. dataGridView1.Rows.Add(item.Key, item.Value);
  79. for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
  80. {
  81. this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  82. }
  83. int rowHeight = (dataGridView1.Height - dataGridView1.ColumnHeadersHeight - 5)/ dataGridView1.Rows.Count;
  84. for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
  85. {
  86. this.dataGridView1.Rows[i].Height = rowHeight;
  87. }
  88. //
  89. this.txtCode.Text = model.Code;
  90. this.txtName.Text = model.Name;
  91. this.numStartTimeIndex.Value = model.StartTimeIndex;
  92. if (model.ProcessList != null)
  93. dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
  94. for (int i = 0; i < this.dataGridView2.Columns.Count; i++)
  95. {
  96. this.dataGridView2.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  97. }
  98. this.Cursor = Cursors.Default;
  99. }
  100. private void StepProcessFrm_Load(object sender, EventArgs e)
  101. {
  102. InitDataView();
  103. }
  104. #region private
  105. private void reOrderProcess()
  106. {
  107. for (int i = 0; i < model.ProcessList.Count; i++)
  108. model.ProcessList[i].Order = i;
  109. }
  110. private void refreshDataGridView()
  111. {
  112. dataGridView2.DataSource = null;
  113. dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
  114. }
  115. #endregion
  116. #region 工具栏
  117. private void tsbtnSave_Click(object sender, EventArgs e)
  118. {
  119. try
  120. {
  121. string szCode = this.txtCode.Text.Trim();
  122. string szName = this.txtName.Text.Trim();
  123. if (szCode == "" || szName == "")
  124. throw new Exception("请填写编号和名称!");
  125. if (model.ProcessList == null || model.ProcessList.Count == 0)
  126. throw new Exception("请添加流程工序!");
  127. int index = 0;
  128. int TensionCnt = 0;
  129. foreach (var item in model.ProcessList)
  130. {
  131. if (string.IsNullOrWhiteSpace(item.ProcessParams))
  132. throw new Exception($"{SysMgr.ProcessType[item.ProcessCode]} 配方未设置!");
  133. //张力检测一定要第一步,防呆
  134. if (item.ProcessCode == "Tension" && index != 0)
  135. {
  136. throw new Exception("张力测量工序必须在第一步!");
  137. }
  138. else if (item.ProcessCode == "Tension")
  139. {
  140. TensionCnt++;//记录张力测试是否重复
  141. }
  142. if(TensionCnt >1)
  143. throw new Exception("张力测量工序只能存在一次!");
  144. if (item.ProcessCode == "Height" )
  145. {
  146. if(TensionCnt >0 && index != 1)
  147. throw new Exception("厚度测量工序必须在张力测量工序之后!");
  148. else if (TensionCnt == 0 && index != 0)
  149. throw new Exception("厚度测量工序必须在第一步!");
  150. }
  151. index++;
  152. }
  153. model.ProcessType = "快速流程";
  154. model.Code = szCode;
  155. model.Name = szName;
  156. model.StartTimeIndex = (int)numStartTimeIndex.Value;
  157. model.ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code;
  158. bool result;
  159. if (model.Id == 0)
  160. {
  161. model.CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code;
  162. result = service.InsertNav(model);
  163. }
  164. else
  165. result = service.UpdateNav(model);
  166. if (!result)
  167. throw new Exception("保存失败!");
  168. MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  169. this.Close();
  170. }
  171. catch (Exception ex)
  172. {
  173. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  174. }
  175. }
  176. private void tsbtnExit_Click(object sender, EventArgs e)
  177. {
  178. this.Close();
  179. }
  180. #endregion
  181. #region 工序库表格
  182. private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
  183. {
  184. int Index = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
  185. if (Index < this.dataGridView1.Rows.Count)
  186. {
  187. string processCode = this.dataGridView1.Rows[Index].Cells["colCode"].Value.ToString();
  188. bool IsSupport = SysMgr.ProcessType.ContainsKey(processCode);
  189. if (IsSupport)
  190. {
  191. LibprocessCode = processCode;
  192. switch (processCode)
  193. {
  194. case "Tension":
  195. _libTensionProp = new TensionProp();
  196. LibPropertyGrid.SelectedObject = _libTensionProp;
  197. break;
  198. case "Height":
  199. _libThicknessProp = new ThicknessProp();
  200. LibPropertyGrid.SelectedObject = _libThicknessProp;
  201. break;
  202. case "LensMotor":
  203. _libLensProp = new LensProp();
  204. LibPropertyGrid.SelectedObject = _libLensProp;
  205. break;
  206. case "Light":
  207. _libLightProp = new LightProp();
  208. LibPropertyGrid.SelectedObject = _libLightProp;
  209. break;
  210. case "Mark":
  211. _libMarkProp = new MarkProp();
  212. LibPropertyGrid.SelectedObject = _libMarkProp;
  213. break;
  214. case "PointTest":
  215. _libPointTestProp = new PointTestProp();
  216. LibPropertyGrid.SelectedObject = _libPointTestProp;
  217. break;
  218. case "SizeAndDefect":
  219. _libSizeDefectProp = new SizeDefectProp();
  220. LibPropertyGrid.SelectedObject = _libSizeDefectProp;
  221. break;
  222. case "For":
  223. _libForProp = new ForProp();
  224. LibPropertyGrid.SelectedObject = _libForProp;
  225. break;
  226. }
  227. LibPropertyGrid.Refresh();
  228. this.Refresh();
  229. }
  230. else
  231. {
  232. //MessageBox.Show("不支持改功能!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information );
  233. }
  234. }
  235. }
  236. #endregion
  237. #region 流程表格
  238. //单元格编译完成
  239. private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  240. {
  241. var value = dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value;
  242. if (value == null || value.ToString().Trim() == "")
  243. {
  244. dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colTypeName"].Value;
  245. }
  246. }
  247. private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
  248. {
  249. int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
  250. if (Index < this.dataGridView2.Rows.Count)
  251. {
  252. string processCode = this.dataGridView2.Rows[Index].Cells["colProcessCode"].Value.ToString();
  253. string processParams = this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value.ToString();
  254. bool IsSupport = SysMgr.ProcessType.ContainsKey(processCode);
  255. if (IsSupport)
  256. {
  257. switch (processCode)
  258. {
  259. case "Tension":
  260. _ProcessTensionProp = new TensionProp();
  261. _ProcessTensionProp.deserialize(processParams);
  262. ProcessPropertyGrid.SelectedObject = _ProcessTensionProp;
  263. break;
  264. case "Height":
  265. _ProcessThicknessProp = new ThicknessProp();
  266. _ProcessThicknessProp.deserialize(processParams);
  267. ProcessPropertyGrid.SelectedObject = _ProcessThicknessProp;
  268. break;
  269. case "LensMotor":
  270. _ProcessLensProp = new LensProp();
  271. _ProcessLensProp.deserialize(processParams);
  272. ProcessPropertyGrid.SelectedObject = _ProcessLensProp;
  273. break;
  274. case "Light":
  275. _ProcessLightProp = new LightProp();
  276. _ProcessLightProp.deserialize(processParams);
  277. ProcessPropertyGrid.SelectedObject = _ProcessLightProp;
  278. break;
  279. case "Mark":
  280. _ProcessMarkProp = new MarkProp();
  281. _ProcessMarkProp.deserialize(processParams);
  282. ProcessPropertyGrid.SelectedObject = _ProcessMarkProp;
  283. break;
  284. case "PointTest":
  285. _ProcessPointTestProp = new PointTestProp();
  286. _ProcessPointTestProp.deserialize(processParams);
  287. ProcessPropertyGrid.SelectedObject = _ProcessPointTestProp;
  288. break;
  289. case "SizeAndDefect":
  290. _ProcessSizeDefectProp = new SizeDefectProp();
  291. _ProcessSizeDefectProp.deserialize(processParams);
  292. ProcessPropertyGrid.SelectedObject = _ProcessSizeDefectProp;
  293. break;
  294. case "For":
  295. _ProcessForProp = new ForProp();
  296. _ProcessForProp.deserialize(processParams);
  297. ProcessPropertyGrid.SelectedObject = _ProcessForProp;
  298. break;
  299. }
  300. ProcessPropertyGrid.Refresh();
  301. this.Refresh();
  302. }
  303. else
  304. {
  305. //MessageBox.Show("不支持改功能!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information );
  306. }
  307. }
  308. }
  309. private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
  310. {
  311. for (int i = 0; i < dataGridView2.Rows.Count; i++)
  312. {
  313. if (SysMgr.ProcessType.ContainsKey(dataGridView2.Rows[i].Cells[0].Value.ToString()))
  314. {
  315. dataGridView2.Rows[i].Cells["colTypeName"].Value = SysMgr.ProcessType[dataGridView2.Rows[i].Cells[0].Value.ToString()];
  316. }
  317. else
  318. {
  319. dataGridView2.Rows[i].Cells["colTypeName"].Value = "不支持";
  320. dataGridView2.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
  321. }
  322. }
  323. }
  324. #endregion
  325. #region 操作按钮
  326. private void btnAdd_Click(object sender, EventArgs e)
  327. {
  328. try
  329. {
  330. if (this.dataGridView1.SelectedRows.Count != 1)
  331. throw new Exception("请选择要插入的工序!");
  332. string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  333. string processParams = "";
  334. switch (LibprocessCode)
  335. {
  336. case "Tension":
  337. processParams = _libTensionProp.serialize();
  338. break;
  339. case "Height":
  340. processParams = _libThicknessProp.serialize();
  341. break;
  342. case "LensMotor":
  343. processParams = _libLensProp.serialize();
  344. break;
  345. case "Light":
  346. processParams = _libLightProp.serialize();
  347. break;
  348. case "Mark":
  349. processParams = _libMarkProp.serialize();
  350. break;
  351. case "PointTest":
  352. processParams = _libPointTestProp.serialize();
  353. break;
  354. case "SizeAndDefect":
  355. processParams = _libSizeDefectProp.serialize();
  356. break;
  357. case "For":
  358. processParams = _libForProp.serialize();
  359. break;
  360. }
  361. model.ProcessList.Add(new Models.StepProcess()
  362. {
  363. ProcessCode = processCode,
  364. ProcessName = SysMgr.ProcessType[processCode],
  365. ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code,
  366. CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code,
  367. ProcessParams = processParams
  368. });
  369. reOrderProcess();
  370. this.refreshDataGridView();
  371. this.dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Selected = true;
  372. dataGridView2.CurrentCell = dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Cells[1];
  373. }
  374. catch (Exception ex)
  375. {
  376. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  377. }
  378. }
  379. private void btnInsert_Click(object sender, EventArgs e)
  380. {
  381. try
  382. {
  383. if (this.dataGridView1.SelectedRows.Count != 1)
  384. throw new Exception("请选择要插入的工序!");
  385. string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  386. int liInsertIndex = this.dataGridView2.Rows.Count;
  387. if (this.dataGridView2.SelectedRows.Count > 0)
  388. liInsertIndex = this.dataGridView2.SelectedRows[0].Index;
  389. string processParams = "";
  390. switch (LibprocessCode)
  391. {
  392. case "Tension":
  393. processParams = _libTensionProp.serialize();
  394. break;
  395. case "Height":
  396. processParams = _libThicknessProp.serialize();
  397. break;
  398. case "LensMotor":
  399. processParams = _libLensProp.serialize();
  400. break;
  401. case "Light":
  402. processParams = _libLightProp.serialize();
  403. break;
  404. case "Mark":
  405. processParams = _libMarkProp.serialize();
  406. break;
  407. case "PointTest":
  408. processParams = _libPointTestProp.serialize();
  409. break;
  410. case "SizeAndDefect":
  411. processParams = _libSizeDefectProp.serialize();
  412. break;
  413. }
  414. model.ProcessList.Insert(liInsertIndex, new Models.StepProcess()
  415. {
  416. ProcessCode = processCode,
  417. ProcessName = SysMgr.ProcessType[processCode],
  418. Order = liInsertIndex,
  419. ModifyUserCode = SysMgr.Instance.UserMgr.LoginUser.Code,
  420. CreateUserCode = SysMgr.Instance.UserMgr.LoginUser.Code,
  421. ProcessParams = processParams
  422. });
  423. reOrderProcess();
  424. this.refreshDataGridView();
  425. this.dataGridView2.Rows[liInsertIndex].Selected = true;
  426. dataGridView2.CurrentCell = dataGridView2.Rows[liInsertIndex].Cells[1];
  427. }
  428. catch (Exception ex)
  429. {
  430. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  431. }
  432. }
  433. private void btnDel_Click(object sender, EventArgs e)
  434. {
  435. try
  436. {
  437. if (this.dataGridView2.SelectedRows.Count != 1)
  438. throw new Exception("请选择要删除的工序!");
  439. int liRowIndex = this.dataGridView2.SelectedRows[0].Index;
  440. model.ProcessList.RemoveAt(liRowIndex);
  441. if (liRowIndex >= dataGridView2.Rows.Count - 1)
  442. liRowIndex = dataGridView2.Rows.Count - 1;
  443. dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
  444. //reOrderProcess();
  445. this.refreshDataGridView();
  446. if (dataGridView2.Rows.Count < 1)
  447. return;
  448. if (liRowIndex >= dataGridView2.Rows.Count)
  449. liRowIndex = dataGridView2.Rows.Count - 1;
  450. dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
  451. }
  452. catch (Exception ex)
  453. {
  454. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  455. }
  456. }
  457. private void btnUp_Click(object sender, EventArgs e)
  458. {
  459. try
  460. {
  461. if (this.dataGridView2.SelectedRows.Count != 1)
  462. throw new Exception("请选择要调整顺序的工序!");
  463. int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
  464. if (liSelIndex == 0)
  465. return;
  466. model.ProcessList.Insert(liSelIndex - 1, model.ProcessList[liSelIndex]);
  467. model.ProcessList.RemoveAt(liSelIndex + 1);
  468. reOrderProcess();
  469. this.refreshDataGridView();
  470. this.dataGridView2.Rows[liSelIndex - 1].Selected = true;
  471. dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex - 1].Cells[1];
  472. }
  473. catch (Exception ex)
  474. {
  475. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  476. }
  477. }
  478. private void btnDown_Click(object sender, EventArgs e)
  479. {
  480. try
  481. {
  482. if (this.dataGridView2.SelectedRows.Count != 1)
  483. throw new Exception("请选择要调整顺序的工序!");
  484. int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
  485. if (liSelIndex == this.dataGridView2.Rows.Count - 1)
  486. return;
  487. model.ProcessList.Insert(liSelIndex + 2, model.ProcessList[liSelIndex]);
  488. model.ProcessList.RemoveAt(liSelIndex);
  489. reOrderProcess();
  490. this.refreshDataGridView();
  491. this.dataGridView2.Rows[liSelIndex + 1].Selected = true;
  492. dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex + 1].Cells[1];
  493. }
  494. catch (Exception ex)
  495. {
  496. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  497. }
  498. }
  499. #endregion
  500. private void refreshUI()
  501. {
  502. SyncContext.Post(m =>
  503. {
  504. var result = m as string;
  505. ProcessPropertyGrid.Refresh();
  506. //tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
  507. //tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
  508. }, "异步操作完成结果");
  509. }
  510. private void ProcessPropertyGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
  511. {
  512. //其中包含了两个重要的属性:OldValue和ChangeItem。
  513. //ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
  514. //而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
  515. int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
  516. string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
  517. string propertyName = e.ChangedItem.PropertyDescriptor.Name;
  518. var oldValue = e.OldValue;
  519. var newValue = e.ChangedItem.Value;
  520. switch (propertyName)
  521. {
  522. case "ChannelIndex":
  523. if ((int)newValue < 1 || (int)newValue > 6)
  524. {
  525. _ProcessLightProp.ChannelIndex = (int)oldValue;
  526. this.refreshUI();
  527. }
  528. else
  529. {
  530. //dev.getDigitalValue((int)newValue);
  531. }
  532. break;
  533. case "DigitalValue":
  534. if ((int)newValue < 0 || (int)newValue > 255)
  535. {
  536. _ProcessLightProp.DigitalValue = (int)oldValue;
  537. this.refreshUI();
  538. }
  539. break;
  540. //case "ThresholdsClass":
  541. // if (!IsNumber(newValue.ToString().Replace("-", "").Replace(",", "").Replace(";", "").Replace(".", "")))
  542. // txtLog.Text = "种类阀值只可输入数字!";
  543. // else if (!verifyThresholdsCount(newValue.ToString(), prop.ThresholdsClassCount))
  544. // txtLog.Text = "输入种类阀值与数量不一致!";
  545. // else
  546. // txtLog.Text = "";
  547. // break;
  548. //case "ThresholdsClassCount":
  549. // if (!verifyThresholdsCount(prop.ThresholdsClass, (int)newValue))
  550. // txtLog.Text = "输入种类阀值与数量不一致!";
  551. // else
  552. // txtLog.Text = "";
  553. // break;
  554. }
  555. switch (className)
  556. {
  557. case "TensionProp":
  558. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessTensionProp.serialize();
  559. break;
  560. case "ThicknessProp":
  561. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessThicknessProp.serialize();
  562. break;
  563. case "LensProp":
  564. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessLensProp.serialize();
  565. break;
  566. case "LightProp":
  567. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessLightProp.serialize();
  568. break;
  569. case "MarkProp":
  570. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessMarkProp.serialize();
  571. break;
  572. case "SizeDefectProp":
  573. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessSizeDefectProp.serialize();
  574. break;
  575. case "PointTestProp":
  576. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessPointTestProp.serialize();
  577. break;
  578. case "ForProp":
  579. this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = _ProcessForProp.serialize();
  580. break;
  581. }
  582. }
  583. }
  584. }