FlexGrid for WPF
任意のセルをマージする
基本操作 > マージ > 任意のセルをマージする

グリッドのAllowMerging プロパティをAllに設定して、マージしたいセル範囲をIMergeManagerインタフェースを実装したクラス内に指定して任意のセルをマージできます。

次の例では、2行2列目から5行3列目をマージする方法を示します。

【実行例】

Visual Basic
コードのコピー
Class MyMergeManager
    Implements IMergeManager

    Public Function GetMergedRange(grid As C1FlexGrid, cellType__1 As CellType, rg As CellRange) As CellRange Implements IMergeManager.GetMergedRange
        ' データセルの結合を対象します 
        ' (行または列ヘッダを結合しない場合)
        If cellType__1 = CellType.Cell Then
            If rg.Column >= 1 AndAlso rg.Column <= 2 AndAlso rg.Row >= 1 AndAlso rg.Row <= 4 Then
                rg.Column = 1
                rg.Column2 = 2
                rg.Row = 1
                rg.Row2 = 4
            End If
        End If

        ' 完了
        Return rg
    End Function
    Private Function GetDataDisplay(grid As C1FlexGrid, r As Integer, c As Integer) As String
        Return grid(r, c).ToString()
    End Function
C#
コードのコピー
class MyMergeManager : IMergeManager
{
    public CellRange GetMergedRange(C1FlexGrid grid, CellType cellType, CellRange rg)
    {
        // データセルの結合を対象します 
        // (行または列ヘッダを結合しない場合)
        if (cellType == CellType.Cell)
        {
            if (rg.Column >= 1 && rg.Column <= 2 && rg.Row >= 1 && rg.Row <= 4)
            {
                rg.Column = 1;
                rg.Column2 = 2;
                rg.Row = 1;
                rg.Row2 = 4;
            }
        }

        // 完了
        return rg;
    }
    string GetDataDisplay(C1FlexGrid grid, int r, int c)
    {
        return grid[r, c].ToString();
    }
}

注意:

  • マージ(結合)を解除する場合は、MergedRanges コレクションから削除(Clear/RemoveAt)します。
  • カスタムマージと自動マージを同時に実装することはできません。