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
Mary-Kate Olsenasal
2025-01-12 15:21:47371semak imbas

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

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!

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