Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menggabungkan Sel Pendua dalam Lajur Pertama WinForms DataGridView?

Bagaimana untuk Menggabungkan Sel Pendua dalam Lajur Pertama WinForms DataGridView?

Mary-Kate Olsen
Lepaskan: 2025-01-12 15:21:47
asal
328 orang telah melayarinya

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

WinForms DataGridView Cell Merge

Soalan:

Dalam DataGridView, data disusun dalam format grid, mengandungi baris dan lajur. Setiap persilangan baris dan lajur diwakili oleh sel. Dalam contoh ini, data dipaparkan dalam format supaya nilai pendua dalam lajur pertama (Hd1) tidak digabungkan, menghasilkan berbilang baris untuk nilai yang sama.

Keperluan:

Matlamatnya adalah untuk menggabungkan sel dengan nilai pendua dalam lajur pertama (Hd1) untuk meningkatkan visual dan menyatukan data dengan cekap.

Penyelesaian:

Untuk menggabungkan sel dalam DataGridView, anda boleh mengikuti langkah berikut:

  1. Cari nilai pendua:

    • Buat kaedah bernama IsTheSameCellValue yang membandingkan nilai dua sel bersebelahan dalam lajur pertama. Jika nilai adalah sama, true dikembalikan, jika tidak false dikembalikan.
<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
  1. Lukisan sel:

    • Timpa CellPainting pengendali acara dan ubah suai sifat AdvancedBorderStyle sel:
<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
  1. Pemformatan sel:

    • Timpa pengendali acara CellFormatting untuk menetapkan nilai kepada rentetan kosong jika sel ialah 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
  1. Tetapan lain:

    • Tetapkan dataGridView1.AutoGenerateColumns kepada false dalam acara pemuatan borang untuk mengelakkan lajur daripada dijana secara automatik.
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Salin selepas log masuk

Keputusan:

Melakukan langkah ini akan menggabungkan sel dengan nilai pendua dalam lajur pertama DataGridView, menjadikan paparan data lebih padat dan teratur.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Sel Pendua dalam Lajur Pertama WinForms DataGridView?. 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