Heim > Backend-Entwicklung > C++ > Wie füge ich DataGridView-Zellen in WinForms zusammen, um Daten mit doppelten Headerwerten zu konsolidieren?

Wie füge ich DataGridView-Zellen in WinForms zusammen, um Daten mit doppelten Headerwerten zu konsolidieren?

Susan Sarandon
Freigeben: 2025-01-12 15:20:44
Original
253 Leute haben es durchsucht

How to Merge DataGridView Cells in WinForms to Consolidate Data with Duplicate Header Values?

Zellenzusammenführung in WinForms

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage