private void dtgCompetition() { int X = metroGrid1.ColumnHeadersHeight + metroGrid1.Rows.Cast <DataGridViewRow>().Sum(r => r.Height); textBox1.Location = new Point(metroGrid1.Location.X, X + metroGrid1.Location.Y + 15); textBox1.Size = metroGrid2.Size; metroGrid2.Location = new Point(textBox1.Location.X, textBox1.Location.Y + textBox1.Size.Height + 1); metroGrid2.Rows.Clear(); metroGrid2.RowHeadersVisible = false; metroGrid2.ColumnHeadersVisible = false; metroGrid2.ColumnCount = 1; metroGrid2.Rows.Add("구분"); // 구분 색깔 for (int i = 0; i < 1; i++) { metroGrid2.Rows[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; metroGrid2.Rows[i].Cells[0].Style.BackColor = Color.FromArgb(91, 155, 213); metroGrid2.Rows[i].Cells[0].Style.ForeColor = Color.White; } for (int i = 0; i < mainFrm.selectCompetitionAndSimilarity.Length; i++) { if (mainFrm.selectCompetitionAndSimilarity[i] == true) { metroGrid2.Rows.Add(mainFrm.CompetitionData[0, i]); metroGrid2.Rows[metroGrid2.RowCount - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; metroGrid2.Rows[metroGrid2.RowCount - 1].Cells[0].Style.BackColor = Color.FromArgb(222, 235, 247); } } // 유사무기에 뭐가 있는지 추출해옴 SimilarData = (string[])mainFrm.SimilarityWeapon.ToArray(); /* * SimilarData = new string[mainFrm.Similar.GetLength(0)]; * for (int i = 1; i < mainFrm.Similar.GetLength(0); i++) * { * SimilarData[i - 1] = mainFrm.Similar[i, 3].ToString(); * } * // 중복을 제거하고 난 뒤, Null 값도 제거하고 * SimilarData = GetDistinctValues<string>(SimilarData); * SimilarData = SimilarData.Where(condition => condition != null).ToArray(); */ // 경쟁무기 개수만큼 열을 추가 for (int i = 0; i < SimilarData.Length; i++) { metroGrid2.Columns.Add("", ""); metroGrid2.Rows[0].Cells[i + 1].Style.BackColor = Color.FromArgb(218, 83, 44); metroGrid2.Rows[0].Cells[i + 1].Style.ForeColor = Color.White; metroGrid2.Rows[0].DefaultCellStyle.Font = new Font("나눔고딕", 9, FontStyle.Bold); // M151을 기준으로 데이터들을 탐색함 var IndexOf2DArray = ExtensionMethods.CoordinatesOf(mainFrm.CompetitionData, SimilarData[i]); int count = 1; metroGrid2.Rows[0].Cells[i + 1].Value = SimilarData[i]; // 무기명 for (int j = 0; j < mainFrm.selectCompetitionAndSimilarity.Length; j++) { if (mainFrm.selectCompetitionAndSimilarity[j] == true) { metroGrid2.Rows[count].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, j]; count++; } } /* * // ★나중에 for문하나로 바꿔야함. 범용성 * metroGrid2.Rows[0].Cells[i + 1].Value = SimilarData[i]; // 무기명 * metroGrid2.Rows[1].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 6]; // 개발국가 * metroGrid2.Rows[2].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 5]; // 제작사 * metroGrid2.Rows[8].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 17]; // 선회 * metroGrid2.Rows[9].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 18]; // 고저 * metroGrid2.Rows[10].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 26]; // 구동속도 * metroGrid2.Rows[11].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 39]; // 안정화 정확도 * metroGrid2.Rows[12].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 38]; // 조준정확도 * metroGrid2.Rows[13].Cells[i + 1].Value = mainFrm.CompetitionData[IndexOf2DArray.Item1, 7]; // 단가 */ for (int j = 1; j < metroGrid2.RowCount; j++) { metroGrid2.Rows[j].Cells[i + 1].Style.BackColor = Color.White; } } // Design metroGrid2.DefaultCellStyle.BackColor = Color.White; // 국내무기체계 필요제원 metroGrid2.Columns.Add("", ""); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Value = "국내무기체계"; metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.FromArgb(0, 176, 80); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.ForeColor = Color.White; for (int j = 1; j < metroGrid2.RowCount; j++) { metroGrid2.Rows[j].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.White; } this.metroGrid2.DefaultCellStyle.Font = new Font("나눔고딕", 9); for (int i = 0; i < metroGrid2.ColumnCount; i++) { metroGrid2.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } textBox2.Size = metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Size; int txtBoxWidth = 0; for (int i = 0; i < SimilarData.Length; i++) { txtBoxWidth += metroGrid2.Columns[i + 1].Width; } textBox1.Size = new Size(txtBoxWidth, metroGrid2.Size.Height); textBox1.Location = new Point(textBox1.Location.X + metroGrid2.Columns[0].Width, textBox1.Location.Y); X = metroGrid2.Columns.Cast <DataGridViewColumn>().Sum(r => r.Width); textBox2.Location = new Point(metroGrid2.Location.X + X - metroGrid2.Columns[metroGrid2.ColumnCount - 1].Width + 2, textBox1.Location.Y); txtBoxWidth = 0; // 단가는 Table의 가장 아래로 들어감 int PriceIndex = -1; for (int i = 0; i < metroGrid2.RowCount; i++) { if (metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("Prices") != -1 || metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("단가") != -1 || metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("가격") != -1) { PriceIndex = i; break; } } if (PriceIndex != -1) { int _iCurrentRow = PriceIndex; DataGridViewRow _dgvRow = metroGrid2.Rows[_iCurrentRow]; metroGrid2.Rows.RemoveAt(_iCurrentRow); metroGrid2.Rows.Insert(metroGrid2.RowCount, _dgvRow); } for (int i = 1; i < metroGrid2.RowCount; i++) { if (mainFrm.DomesticSpec[i - 1] != null) { metroGrid2.Rows[i].Cells[metroGrid2.ColumnCount - 1].Value = mainFrm.DomesticSpec[i - 1]; } } // metroGrid2.Rows[1].Cells[metroGrid2.ColumnCount - 1].Value = "대한민국"; metroGrid2.CurrentCell = null; }
private void dtgCompetition() { int X = metroGrid1.ColumnHeadersHeight + metroGrid1.Rows.Cast <DataGridViewRow>().Sum(r => r.Height); textBox1.Location = new Point(metroGrid1.Location.X, metroGrid1.Location.Y + X + 20); metroGrid2.Location = new Point(metroGrid1.Location.X, textBox1.Location.Y + textBox1.Height); metroGrid2.Rows.Clear(); metroGrid2.RowHeadersVisible = false; metroGrid2.ColumnHeadersVisible = false; metroGrid2.ColumnCount = 1; metroGrid2.Rows.Add("구분"); // 구분 색깔 for (int i = 0; i < 1; i++) { metroGrid2.Rows[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; metroGrid2.Rows[i].Cells[0].Style.BackColor = Color.FromArgb(91, 155, 213); metroGrid2.Rows[i].Cells[0].Style.ForeColor = Color.White; } for (int i = 0; i < mainFrm.selectSubstitution.Length; i++) { if (mainFrm.selectSubstitution[i] == true) { metroGrid2.Rows.Add(mainFrm.Substitution[0, i]); metroGrid2.Rows[metroGrid2.RowCount - 1].DefaultCellStyle.WrapMode = DataGridViewTriState.True; metroGrid2.Rows[metroGrid2.RowCount - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; metroGrid2.Rows[metroGrid2.RowCount - 1].Cells[0].Style.BackColor = Color.FromArgb(222, 235, 247); } } #region 대체무기체계 DB에서 추가함 // 경쟁무기체계를 추가함 // 경쟁무기에 뭐가 있는지 추출해옴 SubstitutionData = new string[mainFrm.Substitution.GetLength(0)]; for (int i = 1; i < mainFrm.Substitution.GetLength(0); i++) { SubstitutionData[i - 1] = mainFrm.Substitution[i, 3].ToString(); } // 중복을 제거하고 난 뒤, Null 값도 제거하고 SubstitutionData = GetDistinctValues <string>(SubstitutionData); SubstitutionData = SubstitutionData.Where(condition => condition != null).ToArray(); // 경쟁무기 개수만큼 열을 추가 for (int i = 0; i < SubstitutionData.Length; i++) { metroGrid2.Columns.Add("", ""); metroGrid2.Rows[0].Cells[i + 1].Style.BackColor = Color.FromArgb(227, 162, 26); metroGrid2.Rows[0].Cells[i + 1].Style.ForeColor = Color.White; metroGrid2.Rows[0].DefaultCellStyle.Font = new Font("나눔고딕", 9, FontStyle.Bold); // M151을 기준으로 데이터들을 탐색함 var IndexOf2DArray = ExtensionMethods.CoordinatesOf(mainFrm.Substitution, SubstitutionData[i]); int count = 1; metroGrid2.Rows[0].Cells[i + 1].Value = SubstitutionData[i]; // 무기명 for (int j = 0; j < mainFrm.selectSubstitution.Length; j++) { if (mainFrm.selectSubstitution[j] == true) { metroGrid2.Rows[count].Cells[i + 1].Value = mainFrm.Substitution[IndexOf2DArray.Item1, j]; count++; } } for (int j = 1; j < metroGrid2.RowCount; j++) { metroGrid2.Rows[j].Cells[i + 1].Style.BackColor = Color.White; } } #endregion // Design metroGrid2.DefaultCellStyle.BackColor = Color.White; // 국내무기체계 필요제원 metroGrid2.Columns.Add("", ""); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Value = "국내무기체계"; metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.FromArgb(0, 176, 80); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.ForeColor = Color.White; for (int j = 1; j < metroGrid2.RowCount; j++) { metroGrid2.Rows[j].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.White; } this.metroGrid2.DefaultCellStyle.Font = new Font("나눔고딕", 9); //DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells // 국내무기체계 필요제원 metroGrid2.Columns.Add("", ""); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Value = "설 명"; metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.FromArgb(255, 242, 204); metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 1].Style.ForeColor = Color.Black; metroGrid2.Columns[metroGrid2.ColumnCount - 1].DefaultCellStyle.WrapMode = DataGridViewTriState.True; for (int j = 1; j < metroGrid2.RowCount; j++) { metroGrid2.Rows[j].Cells[metroGrid2.ColumnCount - 1].Style.BackColor = Color.White; } this.metroGrid2.DefaultCellStyle.Font = new Font("나눔고딕", 9); for (int i = 0; i < metroGrid2.ColumnCount - 1; i++) { metroGrid2.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet; metroGrid2.Columns[i].Width = (int)(metroGrid2.Columns[i].Width * 1.2); } metroGrid2.Columns[metroGrid2.ColumnCount - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; textBox2.Size = metroGrid2.Rows[0].Cells[metroGrid2.ColumnCount - 2].Size; int txtBoxWidth = 0; for (int i = 0; i < SubstitutionData.Length; i++) { txtBoxWidth += metroGrid2.Columns[i + 1].Width; } textBox1.Size = new Size(txtBoxWidth + 1, metroGrid2.Size.Height); textBox1.Location = new Point(textBox1.Location.X + metroGrid2.Columns[0].Width, textBox1.Location.Y); X = metroGrid2.Columns.Cast <DataGridViewColumn>().Sum(r => r.Width); textBox2.Location = new Point(metroGrid2.Location.X + X - metroGrid2.Columns[metroGrid2.ColumnCount - 1].Width - metroGrid2.Columns[metroGrid2.ColumnCount - 2].Width, textBox1.Location.Y); // 단가는 Table의 가장 아래로 들어감 int PriceIndex = -1; for (int i = 0; i < metroGrid2.RowCount; i++) { if (metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("Prices") != -1 || metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("단가") != -1 || metroGrid2.Rows[i].Cells[0].Value.ToString().IndexOf("가격") != -1) { PriceIndex = i; break; } } if (PriceIndex != -1) { int _iCurrentRow = PriceIndex; DataGridViewRow _dgvRow = metroGrid2.Rows[_iCurrentRow]; metroGrid2.Rows.RemoveAt(_iCurrentRow); metroGrid2.Rows.Insert(metroGrid2.RowCount, _dgvRow); // metroGrid2.Rows[_iCurrentRow + 1].Selected = true; // metroGrid2.CurrentCell = metroGrid2[metroGrid2.CurrentCell.ColumnIndex, _iCurrentRow + 1]; } for (int i = 1; i < metroGrid2.RowCount; i++) { if (mainFrm.SubstituteDomesticSpec != null) { if (mainFrm.SubstituteDomesticSpec[i - 1] != null) { metroGrid2.Rows[i].Cells[metroGrid2.ColumnCount - 2].Value = mainFrm.SubstituteDomesticSpec[i - 1]; } } } for (int i = 1; i < metroGrid2.RowCount; i++) { metroGrid2.Rows[i].Cells[metroGrid2.ColumnCount - 1].Style.Alignment = DataGridViewContentAlignment.MiddleLeft; } for (int i = 1; i < metroGrid2.RowCount; i++) { int SpecIndex = Array.IndexOf(mainFrm.FullSpecSubstitution, metroGrid2.Rows[i].Cells[0].Value.ToString()); metroGrid2.Rows[i].Cells[metroGrid2.ColumnCount - 1].Value = mainFrm.SubstitutionDescrition[SpecIndex]; } metroGrid2.CurrentCell = null; }