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

取得と移動
| メンバー | 内容 |
|---|---|
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) は移動先を計算するだけのメソッドで、
独自のキーバインドを実装する場合に使えます。