ウィンドウ枠の固定を使用すると、ユーザーがスクロールしても行や列が表示されたままになるようにロックできます。大きなデータセットを扱う際に、ヘッダーやラベルを表示し続けるのに便利です。
基本的な固定
指定したセル位置で行と列を固定します:
var sheet = grid.CurrentWorksheet;
// Freeze at row 5 (rows 0–4 are frozen at the top)
sheet.FreezeToCell(5, 0);

FreezeToCellのオーバーロード
| シグネチャー | 説明 |
|---|---|
FreezeToCell(CellPosition pos) | 指定したセル位置で固定 |
FreezeToCell(string address) | アドレスで固定(例:"B5") |
FreezeToCell(int row, int col) | 行と列のインデックスで固定 |
FreezeToCell(CellPosition pos, FreezeArea area) | 位置と特定の領域で固定 |
FreezeToCell(int row, int col, FreezeArea area) | インデックスと特定の領域で固定 |
使用例
// Freeze at address
sheet.FreezeToCell("B5");
// Freeze at CellPosition
sheet.FreezeToCell(new CellPosition(5, 1));
// Freeze at row 3, column 2
sheet.FreezeToCell(3, 2);
固定領域
ReoGridは1辺または隣接する2辺での固定をサポートしています。FreezeArea 列挙型を使用して、固定領域の表示位置を指定します:
| FreezeAreaの値 | 説明 |
|---|---|
None | 固定なし |
Left | 左側の列を固定 |
Top | 上部の行を固定 |
Right | 右側の列を固定 |
Bottom | 下部の行を固定 |
LeftTop | 左の列と上の行を固定(デフォルト) |
LeftBottom | 左の列と下の行を固定 |
RightTop | 右の列と上の行を固定 |
RightBottom | 右の列と下の行を固定 |

例:右下で固定
sheet.FreezeToCell(5, 5, FreezeArea.RightBottom);
例:上部の行のみを固定
sheet.FreezeToCell(3, 0, FreezeArea.Top);
例:左側の列のみを固定
sheet.FreezeToCell(0, 2, FreezeArea.Left);
固定の解除
すべての固定設定を解除します:
sheet.Unfreeze();
プロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
FreezeArea | FreezeArea | 現在の固定領域タイプ(読み取り専用) |
FreezePos | CellPosition | 現在の固定位置(読み取り専用) |
IsFrozen | bool | ワークシートが現在固定されているか(読み取り専用) |
// Get current freeze state
FreezeArea area = sheet.FreezeArea;
CellPosition pos = sheet.FreezePos;
bool frozen = sheet.IsFrozen;
固定が可能か確認
固定する前に、ワークシートがサポートしているか確認します:
if (sheet.CanFreeze())
{
sheet.FreezeToCell(3, 2);
}
CanFreeze() は、ワークシートの現在の状態が固定をサポートしていない場合(例:カスタムビューポートコントローラーが使用されている場合)に false を返します。
イベント
| イベント | 型 | 説明 |
|---|---|---|
CellsFrozen | EventHandler | ワークシートが固定された後に発生 |
CellsUnfrozen | EventHandler | ワークシートの固定が解除された後に発生 |
sheet.CellsFrozen += (s, e) =>
{
Console.WriteLine($"Frozen at {sheet.FreezePos}, area: {sheet.FreezeArea}");
};
sheet.CellsUnfrozen += (s, e) =>
{
Console.WriteLine("Worksheet unfrozen");
};
固定領域が大きすぎる場合
固定領域がコントロール全体より大きい場合、アクティブ(スクロール可能な)領域が見えなくなります。
これは以下の場合に発生します:
- 通常の固定領域が指定されているが、コントロールが小さくリサイズされた場合
- 大きすぎる固定領域が指定された場合

例えば、グリッドが100行で最大表示行数が30の場合、下部の行60で固定すると40行が固定領域に必要となり、表示領域を超えてアクティブ領域が見えなくなります。
注意: 固定位置がアクティブなスクロール可能領域に十分なスペースを残すようにしてください。適用する前に
CanFreeze()で検証することを検討してください。
複数行ヘッダーとの使用
ウィンドウ枠の固定は複数行の列ヘッダーと連携します。ワークシートがスクロールされても、固定された列とその複数行ヘッダーは表示されたままです。複数行ヘッダーを参照してください。