ホームページ > バックエンド開発 > C++ > WinForms DataGridView の最初の列で重複するセルを結合するにはどうすればよいですか?

WinForms DataGridView の最初の列で重複するセルを結合するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-12 15:21:47
オリジナル
328 人が閲覧しました

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

WinForms DataGridView セルの結合

質問:

DataGridView では、データは行と列を含むグリッド形式で配置されます。各行と列の交差点はセルで表されます。この例では、最初の列 (Hd1) の重複する値がマージされない形式でデータが表示され、同じ値が複数の行に表示されます。

要件:

目標は、最初の列 (Hd1) で重複する値を持つセルを結合して、ビジュアルを改善し、データを効率的に統合することです。

解決策:

DataGridView でセルを結合するには、次の手順に従います:

  1. 重複する値を検索:

    • 最初の列の 2 つの隣接するセルの値を比較する 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>
ログイン後にコピー
  1. セル描画:

    • 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>
ログイン後にコピー
  1. セルの書式設定:

    • セルが重複している場合は、CellFormatting イベント ハンドラーをオーバーライドして値を空の文字列に設定します。
<code class="language-csharp">if (e.RowIndex == 0)
    return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex))
{
    e.Value = "";
    e.FormattingApplied = true;
}</code>
ログイン後にコピー
  1. その他の設定:

    • 列が自動的に生成されないようにするには、フォーム読み込みイベントで dataGridView1.AutoGenerateColumnsfalse に設定します。
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
ログイン後にコピー

結果:

これらの手順を実行すると、DataGridView の最初の列で重複した値を持つセルが結合され、データ表示がよりコンパクトで整理されたものになります。

以上がWinForms DataGridView の最初の列で重複するセルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート