Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menggabungkan Sel DataGridView dalam WinForms untuk Menyatukan Data dengan Nilai Pengepala Pendua?

Bagaimana untuk Menggabungkan Sel DataGridView dalam WinForms untuk Menyatukan Data dengan Nilai Pengepala Pendua?

Susan Sarandon
Susan Sarandonasal
2025-01-12 15:20:44298semak imbas

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

Cantum sel dalam WinForms

Soalan:

Gabungkan sel dalam DataGridView untuk paparan data disatukan tanpa baris pendua. Matlamatnya adalah untuk menukar grid dengan nilai pengepala yang diulang merentasi baris ke dalam grid di mana nilai pengepala merentangi sel yang digabungkan mewakili baris yang berulang.

Penyelesaian:

Ini boleh dicapai dengan menggabungkan pemformatan sel tersuai dan pengendalian acara cat.

Cari nilai sel pendua:

Mula-mula, tentukan kaedah untuk menentukan sama ada sel semasa mempunyai nilai yang sama dengan sel di atasnya:

<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>

Lukisan sel tersuai:

Dalam acara cabutan sel DataGridView, alih keluar sempadan sel dengan nilai pendua:

<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>

Format sel tersuai:

Dalam acara format sel, sembunyikan nilai baris pendua:

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

Tetapan lain:

Lumpuhkan penjanaan lajur automatik untuk mengelakkan penciptaan lajur yang tidak diingini:

<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>

Keputusan:

Dengan melaksanakan langkah di atas, DataGridView akan memaparkan data dengan sel yang digabungkan, menghapuskan nilai pengepala pendua dan membentangkan paparan yang disatukan.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Sel DataGridView dalam WinForms untuk Menyatukan Data dengan Nilai Pengepala Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn