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!