グループとアウトライン

ReoGrid Outline Sample

行または列にアウトラインを追加するには:

sheet.AddOutline(RowOrColumn.Row, 3, 5);      // 3行目から、5行分のグループ
sheet.AddOutline(RowOrColumn.Column, 5, 2);   // 列のグループ化

AddOutline を呼び出すと、以下の例外が発生する可能性があります。

  • OutlineIntersectedException - 追加しようとするアウトラインが、ワークシート上ですでに存在する他のアウトラインと交差する場合。
  • OutlineAlreadyDefinedException - 追加しようとするアウトラインが、ワークシート上ですでに存在する他のアウトラインと同じである場合。
  • OutlineTooMuchException - アウトラインのレベル数が最大の10に達した場合。
  • OutlineOutOfRangeException - アウトラインを作成するために指定された位置が、ワークシートの利用可能な範囲を超えている場合。(注:アウトラインには折りたたみと展開のためのサムが必要なため、ワークシートの最終行および最終列はどのアウトラインにもグループ化されません。)

アウトラインの折りたたみと展開

AddOutline メソッドはアウトラインのインスタンスを返却します。アウトラインのインスタンスの Collapse および Expand メソッドを利用してアウトラインを折りたたみ、または展開します。

var outline = sheet.AddOutline(RowOrColumn.Row, 3, 5);
outline.Collapse();    // 折りたたむ
outline.Expand();      // 展開する

または、CollapseOutlineExpandOutline メソッドを直接呼び出し、変更するアウトラインの位置を指定します。

sheet.CollapseOutline(RowOrColumn.Row, 3, 5);
sheet.ExpandOutline(RowOrColumn.Row, 3, 5);

上記のメソッドは、指定された位置にアウトラインが見つからない場合、OutlineNotFoundException 例外が発生します。

アウトラインの削除

  • sheet.RemoveOutline(RowOrColumn.Row, start, count) を使用してアウトラインを削除できます。
  • ClearOutlines メソッドでワークシートからすべてのアウトラインを削除することができます。

自動的な折りたたみと展開

もし展開されたアウトラインが付けられている行が隠されたり、行の高さがゼロに設定された場合、そのアウトラインは自動的に折りたたまれます。折りたたまれたアウトラインによってグループ化された行のいずれかが見える場合、または行の高さがゼロ以外に設定されている場合、アウトラインは自動的に展開されます。この動作は無効にすることはできませんが、アウトラインの折りたたみ/展開のイベントが発生します。

行の高さを調整前 ReoGrid Outline Sample

行の高さを調整後 ReoGrid Outline Sample

自動削除

  • 行または列が削除されると、それに関連するアウトラインも自動的に削除されます。

アウトラインのイベント

アウトラインが追加または削除されたとき、ワークシートの以下の2つのイベントが発生します。

sheet.OutlineAdded += (s, e) => MessageBox.Show(
     "アウトラインが " + e.Outline.Start + " から " + e.Outline.End + " まで追加されました");
sheet.OutlineRemoved += (s, e) => MessageBox.Show(
     "アウトラインが " + e.Outline.Start + " から " + e.Outline.End + " まで削除されました");

行の削除により、その行に関連するアウトラインも自動的に削除されるため、OutlineRemoved イベントも発生します。

sheet.DeleteRows(4, 5);

上記のコード実行後、以下のメッセージが表示されます。

「アウトラインが 5 から 3 まで削除されました」

アウトラインとワークシートの両方のインスタンスは、アウトラインの折りたたみ/展開の操作を処理するイベントを提供します。

var outline = sheet.AddOutline(RowOrColumn.Column, 1, 3);

// インスタンスからのイベント
outline.BeforeCollapse += (s, e) => MessageBox.Show("折りたたみ前");
outline.BeforeExpand += (s, e) => MessageBox.Show("展開前");
outline.AfterCollapse += (s, e) => MessageBox.Show("折りたたみ後");
outline.AfterExpand += (s, e) => MessageBox.Show("展開後");

// コントロールからのイベント
sheet.BeforeOutlineCollapse += (s, e) => MessageBox.Show("ワークシート - 折りたたみ前");
sheet.AfterOutlineCollapse += (s, e) => MessageBox.Show("ワークシート - 折りたたみ後");
sheet.BeforeOutlineExpand += (s, e) => MessageBox.Show("ワークシート - 展開前");
sheet.AfterOutlineExpand += (s, e) => MessageBox.Show("ワークシート - 展開後");

ReoGridの他のbefore-eventと同様に、IsCancelled というプロパティがあり、これを true に設定することでイベントのアクションを防ぐことができます。

// IsCancelled を true に設定することで折りたたみまたは展開を防止
sheet.BeforeOutlineCollapse += (s, e) => e.IsCancelled = true;

コントロールのすべてのイベントについては、Events を参照してください。

アウトラインインターフェースパネルの非表示

ReoGridSettings.View_AllowShowOutlinesfalse に設定することで、アウトラインのユーザーインターフェースを非表示にできます。


ページの内容は役に立ちましたか?