作成日: 2021/12/01 最終更新日: 2021/12/01
文書種別
使用方法
詳細
マウスドラッグでセル範囲を選択したときに、SelChangeイベントが発生するので、ここでSelectionプロパティを使用して選択範囲を取得した後、GetMergedRangeメソッドを用いて選択範囲に含まれるマージ範囲を参照できます。
◎サンプルコード(VB)
◎サンプルコード(VB)
Private Sub C1FlexGrid1_SelChange(sender As Object, e As EventArgs) Handles C1FlexGrid1.SelChange
' 選択範囲の取得
Dim range = C1FlexGrid1.Selection
' 選択範囲内のMergedRangeの取得
Dim mergedRanges As CellRange() = New CellRange() {}
For i = range.r1 To range.r2
For j = range.c1 To range.c2
Dim temp = C1FlexGrid1.GetMergedRange(i, j)
If Not mergedRanges.Contains(temp) Then
Array.Resize(mergedRanges, mergedRanges.Length + 1)
mergedRanges(mergedRanges.Length - 1) = temp
End If
Next
Next
' MergedRangeの調査
Dim rows As Integer() = New Integer() {}
For i = 0 To mergedRanges.Length - 1
Console.WriteLine($"{mergedRanges(i)}")
If Not rows.Contains(mergedRanges(i).r1) Then
Array.Resize(rows, rows.Length + 1)
rows(rows.Length - 1) = mergedRanges(i).r1
End If
If Not rows.Contains(mergedRanges(i).r2) Then
Array.Resize(rows, rows.Length + 1)
rows(rows.Length - 1) = mergedRanges(i).r2
End If
Next
End Sub
◎サンプルコード(C#)
private void c1FlexGrid1_SelChange(object sender, EventArgs e)
{
// 選択範囲の取得
CellRange range = c1FlexGrid1.Selection;
// 選択範囲内のMergedRangeの取得
CellRange[] mergedRanges = new CellRange[0];
for (int i = range.r1; i <= range.r2; i++)
{
for (int j = range.c1; j <= range.c2; j++)
{
CellRange temp = c1FlexGrid1.GetMergedRange(i, j);
if (!mergedRanges.Contains(temp))
{
Array.Resize(ref mergedRanges, mergedRanges.Length + 1);
mergedRanges[mergedRanges.Length - 1] = temp;
}
}
}
// MergedRangeの調査
int[] rows = new int[0];
for (int i = 0; i <= mergedRanges.Length - 1; i++)
{
Console.WriteLine($"{mergedRanges[i]}");
if (!rows.Contains(mergedRanges[i].r1))
{
Array.Resize(ref rows, rows.Length + 1);
rows[rows.Length - 1] = mergedRanges[i].r1;
}
if (!rows.Contains(mergedRanges[i].r2))
{
Array.Resize(ref rows, rows.Length + 1);
rows[rows.Length - 1] = mergedRanges[i].r2;
}
}
}