PowerTools MultiRow for Windows Forms 8.0J
セルの自動マージ

GcMultiRowコントロールでは、行に配置されたセルの値が上下の行で同じ場合にセルの自動マージを行う機能を提供します。
マージの条件
セルがマージされるには次の条件をすべて満たす必要があります。
  • セルはテンプレートの行セクションに配置されている。
  • セルは行セクションに上下端に接している。
  • Cell.MergeableプロパティにTrueが設定されている。
  • セルの値が空ではない。(NullまたはString.Emptyではない。)
  • 上下のセルのValueプロパティに同じ値が設定されている。
  • セルのVisibleプロパティにTrueが設定されている。
次の図では、Cell1以外のセルはマージの条件を満たしていません。
セルのスタイル
マージされているセルのスタイルは、最上部のセルに設定されているスタイルが適用されます。
セルの選択と編集
GcMultiRow.MergedCellsSelectionModeプロパティにAllが設定されている場合、マージされたセル全体が選択されます。この場合、セルの編集を行うとマージされたセルがすべて同じ値に変更されます。GcMultiRow.MergedCellsSelectionModeプロパティにIndividuallyが設定されている場合、マージされているセルは1つ1つを別々に選択されます。この場合、セルは別々に値を変更することができます。
セルの検証
マージされたセルにバリデータが設定されている場合、最上部のセルのバリデータと検証アクションが実行されますが、GcMultiRow.CellValidatingイベントは現在のセルに対して発生します。そのため、セルの自動マージ機能を使用する場合には、異なるバリデータをセルに設定することはお勧めしません。
上下関係の指定
GcMultiRowコントロールにマージ条件を満たすセルが存在するとGcMultiRow.QueryCellMergeStateイベントが発生します。このイベントを使用すると、複数のセルに上下関係を指定し、上位のセルの値が異なる場合は下位のセルをマージしないようにすることができます。
Imports GrapeCity.Win.MultiRow

Private Sub GcMultiRow1_QueryCellMergeState(sender As Object, e As QueryCellMergeStateEventArgs) Handles GcMultiRow1.QueryCellMergeState
    If e.ShouldMerge = True Then
        If Not e.QueryCell.CellIndex = 0 Then
            Dim newQueryCell As CellPosition = New CellPosition(e.QueryCell.RowIndex, e.QueryCell.CellIndex - 1)
            Dim newTargetCell As CellPosition = New CellPosition(e.TargetCell.RowIndex, e.TargetCell.CellIndex - 1)

            e.ShouldMerge = Me.GcMultiRow1.IsMerged(newQueryCell, newTargetCell)
        End If
    End If
End Sub
using GrapeCity.Win.MultiRow;

void gcMultiRow1_QueryCellMergeState(object sender, QueryCellMergeStateEventArgs e)
{
    if (e.ShouldMerge == true)
    {
        if (e.QueryCell.CellIndex != 0)
        {
            CellPosition newQueryCell = new CellPosition(e.QueryCell.RowIndex, e.QueryCell.CellIndex - 1);
            CellPosition newTargetCell = new CellPosition(e.TargetCell.RowIndex, e.TargetCell.CellIndex - 1);

            e.ShouldMerge = this.gcMultiRow1.IsMerged(newQueryCell, newTargetCell);
        }
    }
}

制限事項
  • GcMultiRow.MergedCellsSelectionModeプロパティにAllが設定されている場合、以下の動作になります。
    • マージセルが選択されていてもGcMultiRow.SelectedCellsプロパティには1つのセルのみが含まれます。
    • セルに関連するイベントは、選択されている現在のセルに対して発生します。
    • GcMultiRow.AllowUserToReverseSelectプロパティにTrueが設定されている場合、[Ctrl]キー+マウスクリックによって、既に選択したセルの選択状態を反転される動作が正しく機能しない場合があります。例えば、1行目と2行目のセルがマージしている場合、1行目のセルをマウスクリックして選択状態にしたあと、2行目のセルを[Ctrl]キー+マウスクリックしてもセルは選択状態が解除されません。
  • 行セクションに設定した上下の罫線および背景色のグラデーションはマージされたセルに対応していません。
  • マージされたセルの行セクションの高さをリサイズする場合、複数の行セクションをまとめてリサイズすることはできません。
   
参照

 

 


© 2008-2015 GrapeCity inc. All rights reserved.