グループとアウトライン
行または列にアウトラインを追加するには:
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(); // 展開する
または、CollapseOutline
と ExpandOutline
メソッドを直接呼び出し、変更するアウトラインの位置を指定します。
sheet.CollapseOutline(RowOrColumn.Row, 3, 5);
sheet.ExpandOutline(RowOrColumn.Row, 3, 5);
上記のメソッドは、指定された位置にアウトラインが見つからない場合、OutlineNotFoundException
例外が発生します。
アウトラインの削除
sheet.RemoveOutline(RowOrColumn.Row, start, count)
を使用してアウトラインを削除できます。ClearOutlines
メソッドでワークシートからすべてのアウトラインを削除することができます。
自動的な折りたたみと展開
もし展開されたアウトラインが付けられている行が隠されたり、行の高さがゼロに設定された場合、そのアウトラインは自動的に折りたたまれます。折りたたまれたアウトラインによってグループ化された行のいずれかが見える場合、または行の高さがゼロ以外に設定されている場合、アウトラインは自動的に展開されます。この動作は無効にすることはできませんが、アウトラインの折りたたみ/展開のイベントが発生します。
行の高さを調整前
行の高さを調整後
自動削除
- 行または列が削除されると、それに関連するアウトラインも自動的に削除されます。
アウトラインのイベント
アウトラインが追加または削除されたとき、ワークシートの以下の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_AllowShowOutlines
を false
に設定することで、アウトラインのユーザーインターフェースを非表示にできます。