Maison > développement back-end > C++ > Comment fusionner des cellules DataGridView dans WinForms pour consolider des données avec des valeurs d'en-tête en double ?

Comment fusionner des cellules DataGridView dans WinForms pour consolider des données avec des valeurs d'en-tête en double ?

Susan Sarandon
Libérer: 2025-01-12 15:20:44
original
253 Les gens l'ont consulté

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

Fusion de cellules dans WinForms

Question :

Fusionnez les cellules dans un DataGridView pour un affichage des données consolidées sans lignes en double. L'objectif est de convertir une grille avec des valeurs d'en-tête répétées sur les lignes en une grille où les valeurs d'en-tête s'étendent sur les cellules fusionnées représentant les lignes répétées.

Solution :

Ceci peut être réalisé en combinant le formatage de cellule personnalisé et la gestion des événements de peinture.

Trouver les valeurs de cellules en double :

Tout d'abord, définissez une méthode pour déterminer si la cellule actuelle a la même valeur que la cellule au-dessus :

<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>
Copier après la connexion

Dessin de cellule personnalisé :

Dans l'événement de dessin de cellules de DataGridView, supprimez les bordures des cellules avec des valeurs en double :

<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>
Copier après la connexion

Format de cellule personnalisé :

Dans les événements au format cellule, masquez les valeurs de ligne en double :

<code class="language-csharp">if (e.RowIndex == 0)
    return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
    e.Value = "";
    e.FormattingApplied = true;
}</code>
Copier après la connexion

Autres paramètres :

Désactivez la génération automatique de colonnes pour éviter la création de colonnes indésirables :

<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Copier après la connexion

Résultat :

En mettant en œuvre les étapes ci-dessus, DataGridView affichera les données avec les cellules fusionnées, éliminera les valeurs d'en-tête en double et présentera une vue consolidée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal