FlexGrid for WinForms
自動結合
結合 > 自動結合

FlexGrid で、グリッド内のセルを自動結合できるようにするには、AllowMerging プロパティを None 以外の値に設定します。また、対象となる行または列それぞれの AllowMerging プロパティを true に設定する必要もあります。セルの結合は、隣接するセルに同じ空以外の文字列が含まれる場合にのみ行われます。1 組のセルを強制的に結合する方法はありません。結合は、セルコンテンツに基づいて自動的に行われます。この機能により、ソートされたデータで、隣接する行の値に同じデータが繰り返し表示される場合に、簡単に結合ビューを提供できます。

無制限自動結合

無制限自動結合は、隣接するセルに同じ値があるという 1 つの条件だけに基づいてセルを結合する機能です。行または列内のセルを自動的に結合するには、C1FlexGrid クラスの AllowMerging プロパティを Free に設定し、対象となる行または列オブジェクトの AllowMerging プロパティを true に設定するだけです。

無制限自動結合

次のコードは、WinForms FlexGrid の列に無制限結合を適用する方法を示しています。

// 許可される結合の種類を指定します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Free;
                                        
// 結合を許可する列を指定します
c1FlexGrid1.Cols[2].AllowMerging = true;
' 許可される結合の種類を指定します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Free
' 結合を許可する列を指定します
c1FlexGrid1.Cols(2).AllowMerging = True

制限付き自動結合

多くのシナリオでは、上または左方向にあるセルも結合されている場合にのみ、同じ値を持つグリッドセルを結合するようにグリッドを設定します。この動作を制限付き自動結合といい、これを行うには、C1FlexGrid.AllowMerging プロパティを RestrictAllRestrictRows、または RestrictCols に設定します。さらに、対象となる行または列の AllowMerging プロパティを true に設定する必要があります。 

WinForms FlexGrid の列で制限付き自動結合を実行するには、次のコードを使用します。

// 結合を許可する列を指定します
c1FlexGrid1.Cols[3].AllowMerging = true;
                                
// 左側のセルが結合されている場合にのみ列を結合します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols;
' 結合を許可する列を指定します
c1FlexGrid1.Cols(3).AllowMerging = True
' 左側のセルが結合されている場合にのみ列を結合します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols

テーブルヘッダーの結合

グリッドやテーブルのヘッダーセルの結合は、特にヘッダーが複数行である場合によく使用されます。ヘッダーセルを結合するには、C1FlexGrid.AllowMerging プロパティを FixedOnly に設定する必要があります。さらに、指定された行および列の AllowMerging プロパティを true に設定する必要があります。次の例では、同じ値を持つヘッダーセルを結合して、外観を簡略化しています。

テーブルヘッダーの結合

次のコードは、WinForms FlexGrid のテーブルヘッダーにのみ結合を適用する方法を示しています。

// 固定の行と列の結合を許可します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly;
' 固定の行と列の結合を許可します
c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly        

カスタム自動結合

FlexGrid には、AllowMerging 列挙を使用した Custom オプションも用意されています。 この場合は、C1FlexGrid クラスの MergedRanges プロパティを使用して提供されるセル範囲コレクションに対して自動結合が実行されます。カスタム自動結合は、セルコンテンツとは無関係に実行されます。たとえば、次の図では、指定された 2 つのセル範囲が、セルの値が異なるにもかかわらず、結合されています。

カスタム自動結合

次のコードスニペットを使用して、WinForms FlexGrid にカスタム結合を適用できます。

// 結合のモードをアクティブにします
this.c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom;
// いくつかのマージされた範囲を定義します
// 2つのセルは幅が広く、1つのセルは高いです
this.c1FlexGrid1.MergedRanges.Add(2, 2, 2, 3);
// 3つのセルは幅が広く、3つのセルは高さです
this.c1FlexGrid1.MergedRanges.Add(5, 2, 7, 4);
' 結合のモードをアクティブにします
Me.c1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
' いくつかのマージされた範囲を定義します
' 2つのセルは幅が広く、1つのセルは高いです
Me.c1FlexGrid1.MergedRanges.Add(2, 2, 2, 3)
' 3つのセルは幅が広く、3つのセルは高さです
Me.c1FlexGrid1.MergedRanges.Add(5, 2, 7, 4)