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
Lepaskan: 2025-01-12 15:20:44
asal
253 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Tetapan lain:

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

<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan