V4 V5

選択状態はビュー側が持ちます。Worksheet は選択を知りません。

B3:C7 を選択した状態。アクティブセルは B3 で、選択範囲の中で白く残る

取得と移動

メンバー内容
control.Selection選択範囲(RangePosition・取得のみ)
control.ActiveCellアクティブセル(CellPosition・取得のみ)
control.MoveTo(row, col)アクティブセルを移動し、選択を単一セルにする
control.SelectionChanged選択が変わったときのイベント

ビューポートを直接扱う場合は viewport.Selection / viewport.ActiveCell / viewport.SetActiveCell(r, c) / viewport.ExtendSelectionTo(r, c) / viewport.SelectColumn(col) です。

using unvell.ReoGrid.Core;
using unvell.ReoGrid.Core.Rendering;

viewport.SetActiveCell(2, 1);              // B3 をアクティブに(選択も B3 単独になる)
viewport.ExtendSelectionTo(6, 2);          // B3:C7 へ広げる

RangePosition selection = viewport.Selection;
CellPosition active = viewport.ActiveCell;

viewport.SelectColumn(3);                  // D 列全体
viewport.SelectRow(0);                     // 1 行目全体
viewport.SelectAll();

// 行・列すべてが選ばれているかは、範囲を見なくても判定できる
bool wholeColumns = viewport.SelectionIsWholeColumns;

選択範囲への一括操作

コントロールに選択範囲を対象とするヘルパが揃っています。行・列全体が選択されている場合は 自動的に行・列の既定スタイルへ振り分けられるため、104 万セルを走査することはありません。

書式

メンバー
ToggleSelectionBold() / ToggleSelectionItalic() / ToggleSelectionUnderline()
SetSelectionTextColor(color) / SetSelectionBackColor(color)
SetSelectionFontFamily(family) / SetSelectionFontSize(size)
SetSelectionHAlign(align) / SetSelectionVAlign(align) / SetSelectionWrap(wrap)
SetSelectionNumberFormat(format)
MutateSelectionStyle(s => s with { ... }) — 任意の変換

構造

メンバー
MergeSelection() / UnmergeSelection()
SetSelectionOutline(color, width) / SetSelectionAllBorders(color, width) / ClearSelectionBorders()
InsertRowsAtSelection() / DeleteSelectedRows()
InsertColumnsAtSelection() / DeleteSelectedColumns()
SetSelectedRowHeight(h) / SetSelectedColumnWidth(w)
AutoFitSelectedColumns() / AutoFitSelectedRows()
SetSelectionCellType(type)

クリップボード

CopySelection() / CutSelection() / PasteClipboard()

モデルが選択を持たない理由

V4 は worksheet.SelectionRange としてモデル側に持っていました。V5 で分離したのは、 同じワークシートを複数のビューから見る構成と、ヘッドレス実行を素直に扱うためです。

その帰結として、選択範囲はファイルに保存されません

キーボード操作

矢印キー、Shift + 矢印での範囲拡張、Ctrl + 矢印でのジャンプ、Home / End、 Page Up / Down が既定で配線されています。

viewport.StepTarget(dRow, dCol) は移動先を計算するだけのメソッドで、 独自のキーバインドを実装する場合に使えます。

次に読む

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