先頭の何行か・何列かをスクロールしても動かないように固定できます。

設定する
control.SetFreeze(rows: 1, cols: 0); // 1 行目を固定
control.SetFreeze(1, 1); // 1 行目と A 列を固定
control.SetFreeze(0, 0); // 解除
3 つのコントロール(WinForms / WPF / Avalonia)すべてで同じ API です。
ビューポートを直接扱う場合は viewport.FrozenRows / viewport.FrozenCols です。
using unvell.ReoGrid.Core;
using unvell.ReoGrid.Core.Rendering;
viewport.FrozenRows = 1; // 1 行目を固定
viewport.FrozenCols = 1; // A 列を固定
// 固定領域の大きさ(論理ピクセル)。スクロールできるのは残りの領域だけになる
double h = viewport.FrozenHeight;
double w = viewport.FrozenWidth;
double scrollableH = viewport.ScrollableContentHeight;
double scrollableW = viewport.ScrollableContentWidth;
ビュー側の状態
V4 は worksheet.FreezeToCell(r, c) と FreezeArea 列挙でモデル側に持っていましたが、
V5 はビュー側の状態です。
この違いには帰結があります。
- 同じワークシートを複数のビューに載せた場合、固定はビューごとに独立
- ヘッドレスで使う場合は無関係(描画しないので)
- 現時点では保存されません — ファイルを開き直すと解除された状態になります
シートごとの固定位置を保存する機能は今後の課題です。
スクロールとの関係
固定領域は常に描画され、スクロール可能な領域だけが動きます。
| プロパティ | 内容 |
|---|---|
viewport.FrozenHeight / FrozenWidth | 固定領域の寸法 |
viewport.ScrollableContentHeight / ScrollableContentWidth | スクロールする部分の寸法 |
印刷との関係
固定は画面表示のためのものであり、印刷には影響しません。すべてのページで 先頭行を繰り返したい場合は印刷タイトルの機能が必要ですが、現時点では未対応です (印刷とページ設定)。
次に読む
- ビューポート
- 表示倍率