WinForms DataGridView 셀 병합
질문:
DataGridView에서는 데이터가 행과 열을 포함하는 그리드 형식으로 정렬됩니다. 각 행과 열 교차점은 셀로 표시됩니다. 이 예에서는 첫 번째 열(Hd1)의 중복 값이 병합되지 않는 형식으로 데이터가 표시되어 동일한 값에 대한 여러 행이 생성됩니다.
요구사항:
첫 번째 열(Hd1)에 중복된 값이 있는 셀을 병합하여 시각적 효과를 개선하고 데이터를 효율적으로 통합하는 것이 목표입니다.
해결책:
DataGridView에서 셀을 병합하려면 다음 단계를 따르세요.
중복 값 찾기:
IsTheSameCellValue
이라는 메서드를 만듭니다. 값이 동일하면 true
이 반환되고, 동일하지 않으면 false
이 반환됩니다. <code class="language-csharp">bool IsTheSameCellValue(int column, int row) { DataGridViewCell cell1 = dataGridView1[column, row]; DataGridViewCell cell2 = dataGridView1[column, row - 1]; if (cell1.Value == null || cell2.Value == null) { return false; } return cell1.Value.ToString() == cell2.Value.ToString(); }</code>
셀 그리기:
CellPainting
이벤트 핸들러를 재정의하고 셀의 AdvancedBorderStyle
속성을 수정합니다. <code class="language-csharp">private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None; if (e.RowIndex < 1 || e.ColumnIndex < 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None; } else { e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top; } }</code>
셀 서식:
CellFormatting
이벤트 핸들러를 재정의하여 값을 빈 문자열로 설정합니다. <code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
기타 설정:
dataGridView1.AutoGenerateColumns
을 false
으로 설정하세요. <code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
결과:
이 단계를 수행하면 DataGridView의 첫 번째 열에 있는 중복 값이 있는 셀이 병합되어 데이터 표시가 더욱 간결하고 체계화됩니다.
위 내용은 WinForms DataGridView의 첫 번째 열에서 중복 셀을 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!