Heim > Backend-Entwicklung > C++ > Wie füge ich doppelte Zellen in der ersten Spalte einer WinForms DataGridView zusammen?

Wie füge ich doppelte Zellen in der ersten Spalte einer WinForms DataGridView zusammen?

Mary-Kate Olsen
Freigeben: 2025-01-12 15:21:47
Original
328 Leute haben es durchsucht

How to Merge Duplicate Cells in a WinForms DataGridView's First Column?

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:

  1. Duplikatwerte finden:

    • Erstellen Sie eine Methode mit dem Namen 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>
Nach dem Login kopieren
  1. Zellzeichnung:

    • Überschreiben Sie den 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>
Nach dem Login kopieren
  1. Zellenformatierung:

    • Überschreiben Sie den Ereignishandler 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>
Nach dem Login kopieren
  1. Weitere Einstellungen:

    • Setzen Sie dataGridView1.AutoGenerateColumns im Formularladeereignis auf false, um zu verhindern, dass Spalten automatisch generiert werden.
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Nach dem Login kopieren

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!

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