FlexGrid for WinForms | ComponentOne
C1.Win.FlexGrid Namespace / C1FlexGrid Class / GetMergedRange Method / GetMergedRange(Int32,Int32,Boolean) Method
Row index.
Column index.
Whether the range should be clipped to the visible area of the grid.
Example

In This Topic
    GetMergedRange(Int32,Int32,Boolean) Method
    In This Topic
    Returns the merged range of cells that includes a given cell.
    Syntax
    'Declaration
     
    
    Public Overloads Overridable Function GetMergedRange( _
       ByVal row As Integer, _
       ByVal col As Integer, _
       ByVal clip As Boolean _
    ) As CellRange
    public virtual CellRange GetMergedRange( 
       int row,
       int col,
       bool clip
    )

    Parameters

    row
    Row index.
    col
    Column index.
    clip
    Whether the range should be clipped to the visible area of the grid.

    Return Value

    A CellRange object that contains the given cell.
    Remarks

    Cell merging is controlled by the AllowMerging property. The GetMergedRange(Int32,Int32,Boolean) method allows you to determine whether a cell is merged with adjacent cells.

    You can override the GetMergedRange(Int32,Int32,Boolean) method to implement custom merging logic. If you do this, make sure the merging method is consistent and efficient, since it gets called frequently and affects the grid's appearance and behavior.

    Example
    The code below checks the current cell after a selection to see if it is part of a merged range: The code below shows how you can override the GetMergedRange(Int32,Int32,Boolean) method to provide custom merging:
    private void _flex_SelChange(object sender, System.EventArgs e)
    {
      CellRange rg = this._flex.GetMergedRange(_flex.Row, _flex.Col, false);
      if (!rg.IsSingleCell)
      {
        Console.WriteLine("selection is merged: {0},{1}-{2},{3}",
        rg.TopRow, rg.LeftCol, rg.BottomRow, rg.RightCol);
      }
    }
    public class CustomMerge : C1FlexGrid
    {
      public CustomMerge()
      {
        // allow free merging by default
        AllowMerging = AllowMergingEnum.Free;
        for (int r = 0; r < Rows.Count; r++) Rows[r].AllowMerging = true;
        for (int c = 0; c < Cols.Count; c++) Cols[c].AllowMerging = true;
      }
      override public CellRange GetMergedRange(int row, int col, bool clip)
      {
        // merge cells in range (1,1)-(3,3)
        if (row >= 1 && row <= 3 && col >= 1 && col <= 3)
          return GetCellRange(1, 1, 3, 3);
          
        // don't merge anything else
        return GetCellRange(row, col);
      }
    }
    See Also