パラメータ
- row
- 行インデックス。
- col
- 列インデックス。
- clip
- 範囲をグリッドの可視領域でクリップするかどうか。
戻り値の型
指定されたセルを含む CellRangeオブジェクト。
セルのマージは、 AllowMergingプロパティによって制御されます。 GetMergedRange(Int32,Int32,Boolean)メソッドを使用して、セルを隣接するセルとマージするかどうかを決定できます。
GetMergedRange(Int32,Int32,Boolean)メソッドをオーバーライドすると、独自のマージロジックを実装できます。その場合、このメソッドは頻繁に呼び出され、グリッドの外観と動作に影響するため、メソッドの一貫性と効率に留意してください。
次のコードは、選択後に現在のセルをチェックし、それがマージされた範囲の一部であるかどうかを確認します。
次のコードは、 GetMergedRange(Int32,Int32,Boolean)メソッドをオーバーライドして、独自のマージを提供します。Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load flex.AllowMerging = AllowMergingEnum.Free flex.Rows(1).AllowMerging = True flex(1, 1) = "AAAA" flex(1, 2) = "AAAA" AddHandler flex.SelChange, AddressOf flex_SelChange End Sub Private Sub flex_SelChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles flex.SelChange Dim rg As CellRange = flex.GetMergedRange(flex.Row, flex.Col, False) If Not rg.IsSingleCell Then Console.WriteLine("マージセル:{0},{1}-{2},{3}", _ rg.TopRow, rg.LeftCol, rg.BottomRow, rg.RightCol) End If End Sub
private void Form1_Load(object sender, EventArgs e) { flex.AllowMerging = AllowMergingEnum.Free; flex.Rows[1].AllowMerging = true; flex[1, 1] = "AAAA"; flex[1, 2] = "AAAA"; flex.SelChange += flex_SelChange; } private void flex_SelChange(object sender, System.EventArgs e) { CellRange rg = flex.GetMergedRange(flex.Row, flex.Col, false); if (!rg.IsSingleCell) { Console.WriteLine("マージセル:{0},{1}-{2},{3}", rg.TopRow, rg.LeftCol, rg.BottomRow, rg.RightCol); } }
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim flex As CustomMerge = New CustomMerge flex.Rows.Count = 20 flex.Cols.Count = 10 flex.Width = 500 flex.Height = 200 Me.Controls.Add(flex) End Sub Public Class CustomMerge Inherits C1FlexGrid Public Sub New() ' デフォルトでフリーマージを許可します。 AllowMerging = AllowMergingEnum.Free For r As Integer = 0 To Rows.Count - 1 Rows(r).AllowMerging = True Next r For c As Integer = 0 To Cols.Count - 1 Cols(c).AllowMerging = True Next c End Sub Public Overrides Function GetMergedRange(ByVal row As Integer, ByVal col As Integer, ByVal clip As Boolean) As CellRange ' 範囲 (1,1) ~ (3,3) のセルをマージします。 If row >= 1 And row <= 3 And col >= 1 And col <= 3 Then Return GetCellRange(1, 1, 3, 3) End If ' その他のセルはマージしません。 Return GetCellRange(row, col) End Function End Class
private void Form1_Load(object sender, EventArgs e) { CustomMerge flex = new CustomMerge(); flex.Rows.Count = 20; flex.Cols.Count = 10; flex.Width = 500; flex.Height = 200; this.Controls.Add(flex); } public class CustomMerge : C1FlexGrid { public CustomMerge() { // デフォルトでフリーマージを許可します。 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) { // 範囲 (1,1) ~ (3,3) のセルをマージします。 if (row >= 1 && row <= 3 && col >= 1 && col <= 3) return GetCellRange(1, 1, 3, 3); // その他のセルはマージしません。 return GetCellRange(row, col); } }