WinForms DataGridView Cell Merge
Frage:
In DataGridView werden Daten in einem Rasterformat angeordnet, das Zeilen und Spalten enthält. Jeder Zeilen- und Spaltenschnittpunkt wird durch eine Zelle dargestellt. In diesem Beispiel werden die Daten in einem Format angezeigt, sodass doppelte Werte in der ersten Spalte (Hd1) nicht zusammengeführt werden, was zu mehreren Zeilen für denselben Wert führt.
Anforderungen:
Das Ziel besteht darin, Zellen mit doppelten Werten in der ersten Spalte (Hd1) zusammenzuführen, um die visuelle Darstellung zu verbessern und Daten effizient zu konsolidieren.
Lösung:
Um Zellen in DataGridView zusammenzuführen, können Sie die folgenden Schritte ausführen:
Duplikatwerte finden:
IsTheSameCellValue
, die die Werte zweier benachbarter Zellen in der ersten Spalte vergleicht. Wenn die Werte gleich sind, wird true
zurückgegeben, andernfalls wird false
zurückgegeben. <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>
Zellzeichnung:
CellPainting
-Ereignishandler und ändern Sie die AdvancedBorderStyle
-Eigenschaft der Zelle: <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>
Zellenformatierung:
CellFormatting
, um den Wert auf eine leere Zeichenfolge festzulegen, wenn die Zelle ein Duplikat ist: <code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
Weitere Einstellungen:
dataGridView1.AutoGenerateColumns
im Formularladeereignis auf false
, um zu verhindern, dass Spalten automatisch generiert werden. <code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Ergebnis:
Durch das Ausführen dieser Schritte werden Zellen mit doppelten Werten in der ersten Spalte von DataGridView zusammengeführt, wodurch die Datenanzeige kompakter und organisierter wird.
Das obige ist der detaillierte Inhalt vonWie füge ich doppelte Zellen in der ersten Spalte einer WinForms DataGridView zusammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!