private void btnCreateGrid_Click(object sender, EventArgs e) { int x = int.TryParse(tboxColumns.Text, out x) ? x : 1; int y = int.TryParse(tboxRows.Text, out y) ? y : 1; TmpColumnsGrid.Clear(); for (var i = 0; i < x; i++) { RoiGrade tmp = new RoiGrade(); tmp.Name = (i + 1).ToString(); tmp.Start = 0; tmp.End = 0; TmpColumnsGrid.Add(tmp); } TmpRowsGrid.Clear(); for (var i = 0; i < y; i++) { RoiGrade tmp = new RoiGrade(); tmp.Name = (i + 1).ToString(); tmp.Start = 0; tmp.End = 0; TmpRowsGrid.Add(tmp); } gvColumns.DataSource = typeof(List<RoiGrade>); gvColumns.DataSource = bsColumns.DataSource; gvRows.DataSource = typeof(List<RoiGrade>); gvRows.DataSource = bsRows.DataSource; // Clear and create list of ROI-Pieces like ROI-11, ROI-12 etc... bsRoiList.DataSource = GetSubPieceList(); cboxSubPieceOfPoint.DataSource = bsRoiList.DataSource; cboxSubPieceOfGrade.DataSource = bsRoiList.DataSource; // Create new TmpPointSubPieces // 1. 先加入一筆 ALL 的 SubPiece 指全部使用相同設定 TmpPointSubPieces.Clear(); PointSubPiece allsame = new PointSubPiece(); allsame.Name = "ALL"; allsame.Grades = new List<PointGrade>(); foreach (FlawTypeNameExtend i in PxPVariable.FlawTypeName) { PointGrade tmpPG = new PointGrade(); tmpPG.ClassId = i.FlawType; tmpPG.ClassName = i.Name; tmpPG.Score = 0; allsame.Grades.Add(tmpPG); } TmpPointSubPieces.Add(allsame); // 2. 用 Rows 和 Columns 造出所有欄位 foreach (RoiGrade r in TmpRowsGrid) { foreach (RoiGrade c in TmpColumnsGrid) { PointSubPiece tmpPointSubPiece = new PointSubPiece(); tmpPointSubPiece.Name = "ROI-" + r.Name + c.Name; tmpPointSubPiece.Grades = new List<PointGrade>(); foreach (FlawTypeNameExtend i in PxPVariable.FlawTypeName) { PointGrade tmpPG = new PointGrade(); tmpPG.ClassId = i.FlawType; tmpPG.ClassName = i.Name; tmpPG.Score = 0; tmpPointSubPiece.Grades.Add(tmpPG); } TmpPointSubPieces.Add(tmpPointSubPiece); } } // Create new TmpMarkSubPieces // 1. 先加入一筆 ALL 的 SubPiece 指全部使用相同設定 TmpMarkSubPieces.Clear(); MarkSubPiece msp = new MarkSubPiece(); msp.Name = "ALL"; msp.Grades = new List<MarkGrade>(); MarkGrade tmpMG = new MarkGrade(); tmpMG.GradeName = Chr(65).ToString(); tmpMG.Score = 0; msp.Grades.Add(tmpMG); TmpMarkSubPieces.Add(msp); // 2. 用 Rows 和 Columns 造出所有欄位 foreach (RoiGrade r in TmpRowsGrid) { foreach (RoiGrade c in TmpColumnsGrid) { MarkSubPiece tmpMarkSubPiece = new MarkSubPiece(); tmpMarkSubPiece.Name = "ROI-" + r.Name + c.Name; tmpMarkSubPiece.Grades = new List<MarkGrade>(); MarkGrade tmpMG2 = new MarkGrade(); tmpMG2.GradeName = Chr(65).ToString(); tmpMG2.Score = 0; tmpMarkSubPiece.Grades.Add(tmpMG2); TmpMarkSubPieces.Add(tmpMarkSubPiece); } } cboxSubPieceOfPoint_SelectedIndexChanged(cboxSubPieceOfPoint,e); cboxSubPieceOfGrade_SelectedIndexChanged(cboxSubPieceOfGrade,e); }
private void gvGrade_CellEndEdit(object sender, DataGridViewCellEventArgs e) { // Get all rows entered on each press of Enter. if (e.RowIndex == gvGrade.Rows.Count - 1 && !String.IsNullOrEmpty(gvGrade.Rows[e.RowIndex].Cells[1].Value.ToString())) { foreach (MarkSubPiece m in TmpMarkSubPieces) { if (m.Name == cboxSubPieceOfGrade.Text) { MarkGrade tmp = new MarkGrade(); if (e.RowIndex < 4) { tmp.GradeName = Chr(e.RowIndex + 66).ToString(); tmp.Score = Convert.ToInt32(gvGrade.Rows[e.RowIndex].Cells[1].Value) + 1; m.Grades.Add(tmp); } bsMarkSubPiece.DataSource = m.Grades; } } gvGrade.DataSource = typeof(MarkSubPiece); gvGrade.DataSource = bsMarkSubPiece.DataSource; gvGrade.Columns["GradeName"].ReadOnly = true; } }