作成日: 2023/01/13 最終更新日: 2023/01/13
文書種別
使用方法
詳細
固定行(列ヘッダー)で、同じデータを持つセルをマージする方法について、いくつかのケースを紹介します。
(メモ)
※ 下記のケース1、2では、後述するコード(*1)を用いて最初にデータを設定しておいてください。
■ケース1■ 固定行のセルを水平方向にマージ
1つの固定行内で同じコンテンツを持つセルを水平方向にマージします。
ただしデータ行はマージしません。

(方法1)
(A)を「Free」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
(方法2)
(A)を「FixedOnly」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
(方法3)
(C)を「Free」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
■ケース2■ 固定行とデータ行で、異なる方法でマージ
例えば、固定行では「上段のセルがマージされている場合に下段をマージ」し、データ行ではフリーマージする、といったケースです。
それには、(A)を「Free」に、(C)を「RestrictRows」にし、(B)ですべての行を「True」に設定します。

◎サンプルコード(VB)
■ケース3■ 表ヘッダー形式のマージ
水平方向だけでなく、セルを垂直方向にもマージして、表ヘッダーとして利用することができます。
この場合、(A)を「FixedOnly」にし、(B)で各固定行のAllowMergingを「True」に設定すると共に、列のAllowMerging(C1FlexGrid1.Cols[j].AllowMerging)も「True」に設定します。

◎サンプルコード(VB)
(*1)
ケース1、2の初期設定コード例
◎サンプルコード(VB)
(メモ)
行内のセルをマージするには、グリッドおよび行のAllowMergingプロパティを組み合わせて使用します。
最初に、グリッドのAllowMergingプロパティでマージの種類を指定します。
次いで、行のAllowMergingプロパティでマージ対象となる行を設定します。
※固定行のみのマージ種を指定するため、グリッドにはAllowMergingFixedも用意されています。
(A) グリッドのAllowMergingプロパティ(C1FlexGrid1.AllowMerging)
(B) 行のAllowMergingプロパティ(C1FlexGrid1.Rows[i].AllowMerging)
(C) グリッドのAllowMergingFixedプロパティ(C1FlexGrid1.AllowMergingFixed)
※ 下記のケース1、2では、後述するコード(*1)を用いて最初にデータを設定しておいてください。
■ケース1■ 固定行のセルを水平方向にマージ
1つの固定行内で同じコンテンツを持つセルを水平方向にマージします。
ただしデータ行はマージしません。
(方法1)
(A)を「Free」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Rows.Fixed = 2 ' 固定行の数
C1FlexGrid1.AllowMerging = AllowMergingEnum.Free
C1FlexGrid1.Rows(0).AllowMerging = True
C1FlexGrid1.Rows(1).AllowMerging = True
◎サンプルコード(C#)
c1FlexGrid1.Rows.Fixed = 2; // 固定行の数
c1FlexGrid1.AllowMerging = AllowMergingEnum.Free;
c1FlexGrid1.Rows[0].AllowMerging = true;
c1FlexGrid1.Rows[1].AllowMerging = true;
(方法2)
(A)を「FixedOnly」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Rows.Fixed = 2 ' 固定行の数
C1FlexGrid1.AllowMerging = AllowMergingEnum.FixedOnly
C1FlexGrid1.Rows(0).AllowMerging = True
C1FlexGrid1.Rows(1).AllowMerging = True
◎サンプルコード(C#)
c1FlexGrid1.Rows.Fixed = 2; // 固定行の数
c1FlexGrid1.AllowMerging = AllowMergingEnum.FixedOnly;
c1FlexGrid1.Rows[0].AllowMerging = true;
c1FlexGrid1.Rows[1].AllowMerging = true;
(方法3)
(C)を「Free」にし、(B)で各固定行を「True」に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Rows.Fixed = 2 ' 固定行の数
C1FlexGrid1.AllowMergingFixed = AllowMergingEnum.Free
C1FlexGrid1.Rows(0).AllowMerging = True
C1FlexGrid1.Rows(1).AllowMerging = True
◎サンプルコード(C#)
c1FlexGrid1.Rows.Fixed = 2; // 固定行の数
c1FlexGrid1.AllowMergingFixed = AllowMergingEnum.Free;
c1FlexGrid1.Rows[0].AllowMerging = true;
c1FlexGrid1.Rows[1].AllowMerging = true;
■ケース2■ 固定行とデータ行で、異なる方法でマージ
例えば、固定行では「上段のセルがマージされている場合に下段をマージ」し、データ行ではフリーマージする、といったケースです。
それには、(A)を「Free」に、(C)を「RestrictRows」にし、(B)ですべての行を「True」に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Rows.Fixed = 2 ' 固定行の数
C1FlexGrid1.AllowMerging = AllowMergingEnum.Free
C1FlexGrid1.AllowMergingFixed = AllowMergingEnum.RestrictRows
For i As Integer = 0 To C1FlexGrid1.Rows.Count - 1
C1FlexGrid1.Rows(i).AllowMerging = True
Next
◎サンプルコード(C#)
c1FlexGrid1.Rows.Fixed = 2; // 固定行の数
c1FlexGrid1.AllowMerging = AllowMergingEnum.Free;
c1FlexGrid1.AllowMergingFixed = AllowMergingEnum.RestrictRows;
for (int i = 0; i < c1FlexGrid1.Rows.Count; i++)
{
c1FlexGrid1.Rows[i].AllowMerging = true;
}
■ケース3■ 表ヘッダー形式のマージ
水平方向だけでなく、セルを垂直方向にもマージして、表ヘッダーとして利用することができます。
この場合、(A)を「FixedOnly」にし、(B)で各固定行のAllowMergingを「True」に設定すると共に、列のAllowMerging(C1FlexGrid1.Cols[j].AllowMerging)も「True」に設定します。
◎サンプルコード(VB)
C1FlexGrid1.Rows.Fixed = 2 ' 固定行の数
' 固定行のコンテンツ設定
C1FlexGrid1(0, 1) = "商品名"
C1FlexGrid1(0, 2) = "価 格"
C1FlexGrid1(0, 3) = "価 格"
C1FlexGrid1(0, 4) = "個 数"
C1FlexGrid1(0, 5) = "個 数"
C1FlexGrid1(1, 1) = "商品名"
C1FlexGrid1(1, 2) = "肉類"
C1FlexGrid1(1, 3) = "野菜"
C1FlexGrid1(1, 4) = "肉類"
C1FlexGrid1(1, 5) = "野菜"
' ヘッダー形式のマージ
C1FlexGrid1.AllowMerging = AllowMergingEnum.FixedOnly
C1FlexGrid1.Rows(0).AllowMerging = True
C1FlexGrid1.Cols(1).AllowMerging = True
>◎サンプルコード(C#)(VB)
c1FlexGrid1.Rows.Fixed = 2; // 固定行の数
// 固定行のコンテンツ設定
c1FlexGrid1[0, 1] = "商品名";
c1FlexGrid1[0, 2] = "価 格";
c1FlexGrid1[0, 3] = "価 格";
c1FlexGrid1[0, 4] = "個 数";
c1FlexGrid1[0, 5] = "個 数";
c1FlexGrid1[1, 1] = "商品名";
c1FlexGrid1[1, 2] = "肉類";
c1FlexGrid1[1, 3] = "野菜";
c1FlexGrid1[1, 4] = "肉類";
c1FlexGrid1[1, 5] = "野菜";
//ヘッダー形式のマージ
c1FlexGrid1.AllowMerging = AllowMergingEnum.FixedOnly;
c1FlexGrid1.Rows[0].AllowMerging = true;
c1FlexGrid1.Cols[1].AllowMerging = true;
(*1)
ケース1、2の初期設定コード例
◎サンプルコード(VB)
' 固定行の数
C1FlexGrid1.Rows.Fixed = 2
' 固定行のコンテンツ設定
C1FlexGrid1(0, 1) = "AAAA"
C1FlexGrid1(0, 2) = "AAAA"
C1FlexGrid1(0, 3) = "AAAA"
C1FlexGrid1(1, 1) = "BBBB"
C1FlexGrid1(1, 2) = "BBBB"
C1FlexGrid1(1, 4) = "BBBB"
C1FlexGrid1(1, 5) = "BBBB"
' データ行のコンテンツ設定
For i As Integer = 2 To 10 - 1 Step 2
For j As Integer = 1 To 6 - 1 Step 3
C1FlexGrid1(i, j) = "aa" & j.ToString("00")
C1FlexGrid1(i, j + 1) = "aa" & j.ToString("00")
C1FlexGrid1(i, j + 2) = "aa" & j.ToString("00")
Next
For j As Integer = 1 To 6 - 1 Step 2
C1FlexGrid1(i + 1, j) = "bb" & j.ToString("00")
C1FlexGrid1(i + 1, j + 1) = "bb" & j.ToString("00")
Next
Next
◎サンプルコード(C#
//固定行の数
c1FlexGrid1.Rows.Fixed = 2;
//固定行のコンテンツ設定
c1FlexGrid1[0, 1] = "AAAA";
c1FlexGrid1[0, 2] = "AAAA";
c1FlexGrid1[0, 3] = "AAAA";
c1FlexGrid1[1, 1] = "BBBB";
c1FlexGrid1[1, 2] = "BBBB";
c1FlexGrid1[1, 4] = "BBBB";
c1FlexGrid1[1, 5] = "BBBB";
//データ行のコンテンツ設定
for (int i = 2; i < 10; i += 2)
{
for (int j = 1; j < 6; j += 3)
{
c1FlexGrid1[i, j] = "aa" + j.ToString("00");
c1FlexGrid1[i, j + 1] = "aa" + j.ToString("00");
c1FlexGrid1[i, j + 2] = "aa" + j.ToString("00");
}
for (int j = 1; j < 6; j += 2)
{
c1FlexGrid1[i + 1, j] = "bb" + j.ToString("00");
c1FlexGrid1[i + 1, j + 1] = "bb" + j.ToString("00");
}
}