Frage:
Führen Sie Zellen in einer DataGridView zusammen, um eine konsolidierte Datenanzeige ohne doppelte Zeilen zu ermöglichen. Das Ziel besteht darin, ein Raster mit Header-Werten, die sich über Zeilen hinweg wiederholen, in ein Raster umzuwandeln, in dem sich die Header-Werte über zusammengeführte Zellen erstrecken, die die wiederholten Zeilen darstellen.
Lösung:
Dies kann durch die Kombination von benutzerdefinierter Zellformatierung und Verarbeitung von Malereignissen erreicht werden.
Duplizierte Zellwerte finden:
Definieren Sie zunächst eine Methode, um zu bestimmen, ob die aktuelle Zelle denselben Wert hat wie die Zelle darüber:
<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>
Benutzerdefinierte Zellenzeichnung:
Entfernen Sie im Zellzeichnungsereignis von DataGridView die Ränder von Zellen mit doppelten Werten:
<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>
Benutzerdefiniertes Zellenformat:
In Zellformatereignissen doppelte Zeilenwerte ausblenden:
<code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
Weitere Einstellungen:
Deaktivieren Sie die automatische Generierung von Spalten, um die Erstellung unerwünschter Spalten zu verhindern:
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Ergebnis:
Durch die Implementierung der oben genannten Schritte zeigt DataGridView Daten mit zusammengeführten Zellen an, eliminiert doppelte Headerwerte und präsentiert eine konsolidierte Ansicht.
Das obige ist der detaillierte Inhalt vonWie füge ich DataGridView-Zellen in WinForms zusammen, um Daten mit doppelten Headerwerten zu konsolidieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!