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:
Cari nilai pendua:
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>
Lukisan sel:
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>
Pemformatan sel:
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>
Tetapan lain:
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!