FlexGrid for WinForms
GetMergedRange(Int32,Int32,Boolean) Method
Example 



Row index.
Column index.
Whether the range should be clipped to the visible area of the grid.
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
'Usage
 
Dim instance As C1FlexGrid
Dim row As Integer
Dim col As Integer
Dim clip As Boolean
Dim value As CellRange
 
value = instance.GetMergedRange(row, col, clip)
public virtual CellRange GetMergedRange( 
   int row,
   int col,
   bool clip
)
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);
  }
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

C1FlexGrid Class
C1FlexGrid Members
Overload List

 

 


Copyright (c) GrapeCity, inc. All rights reserved.

Send Feedback