WinForms DataGridView セルの結合
質問:
DataGridView では、データは行と列を含むグリッド形式で配置されます。各行と列の交差点はセルで表されます。この例では、最初の列 (Hd1) の重複する値がマージされない形式でデータが表示され、同じ値が複数の行に表示されます。
要件:
目標は、最初の列 (Hd1) で重複する値を持つセルを結合して、ビジュアルを改善し、データを効率的に統合することです。
解決策:
DataGridView でセルを結合するには、次の手順に従います:
重複する値を検索:
IsTheSameCellValue
という名前のメソッドを作成します。値が同じ場合は true
が返され、そうでない場合は false
が返されます。 <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>
セル描画:
CellPainting
イベント ハンドラーをオーバーライドし、セルの AdvancedBorderStyle
プロパティを変更します: <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>
セルの書式設定:
CellFormatting
イベント ハンドラーをオーバーライドして値を空の文字列に設定します。<code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
その他の設定:
dataGridView1.AutoGenerateColumns
を false
に設定します。 <code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
結果:
これらの手順を実行すると、DataGridView の最初の列で重複した値を持つセルが結合され、データ表示がよりコンパクトで整理されたものになります。
以上がWinForms DataGridView の最初の列で重複するセルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。