질문:
중복 행 없이 통합 데이터 표시를 위해 DataGridView의 셀을 병합합니다. 목표는 여러 행에 걸쳐 반복되는 헤더 값이 있는 그리드를 헤더 값이 반복되는 행을 나타내는 병합된 셀에 걸쳐 있는 그리드로 변환하는 것입니다.
해결책:
이는 사용자 정의 셀 서식 지정과 페인트 이벤트 처리를 결합하여 달성할 수 있습니다.
중복 셀 값 찾기:
먼저 현재 셀이 그 위에 있는 셀과 동일한 값을 갖는지 확인하는 방법을 정의합니다.
<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>
사용자 정의 셀 그리기:
DataGridView의 셀 그리기 이벤트에서 중복된 값이 있는 셀의 테두리를 제거합니다.
<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>
맞춤형 셀 형식:
셀 형식 이벤트에서 중복된 행 값 숨기기:
<code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
기타 설정:
원치 않는 열 생성을 방지하려면 열 자동 생성을 비활성화하세요.
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
결과:
위 단계를 구현하면 DataGridView는 병합된 셀로 데이터를 표시하고 중복된 헤더 값을 제거하며 통합된 보기를 제공합니다.
위 내용은 중복된 헤더 값이 있는 데이터를 통합하기 위해 WinForms에서 DataGridView 셀을 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!