ウィンドウ枠の固定

ウィンドウ枠の固定を使用すると、ユーザーがスクロールしても行や列が表示されたままになるようにロックできます。大きなデータセットを扱う際に、ヘッダーやラベルを表示し続けるのに便利です。

基本的な固定

指定したセル位置で行と列を固定します:

var sheet = grid.CurrentWorksheet;

// Freeze at row 5 (rows 0–4 are frozen at the top)
sheet.FreezeToCell(5, 0);

33

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右の列と下の行を固定

85

例:右下で固定

sheet.FreezeToCell(5, 5, FreezeArea.RightBottom);

例:上部の行のみを固定

sheet.FreezeToCell(3, 0, FreezeArea.Top);

例:左側の列のみを固定

sheet.FreezeToCell(0, 2, FreezeArea.Left);

固定の解除

すべての固定設定を解除します:

sheet.Unfreeze();

プロパティ

プロパティ説明
FreezeAreaFreezeArea現在の固定領域タイプ(読み取り専用)
FreezePosCellPosition現在の固定位置(読み取り専用)
IsFrozenboolワークシートが現在固定されているか(読み取り専用)
// 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 を返します。

イベント

イベント説明
CellsFrozenEventHandlerワークシートが固定された後に発生
CellsUnfrozenEventHandlerワークシートの固定が解除された後に発生
sheet.CellsFrozen += (s, e) =>
{
    Console.WriteLine($"Frozen at {sheet.FreezePos}, area: {sheet.FreezeArea}");
};

sheet.CellsUnfrozen += (s, e) =>
{
    Console.WriteLine("Worksheet unfrozen");
};

固定領域が大きすぎる場合

固定領域がコントロール全体より大きい場合、アクティブ(スクロール可能な)領域が見えなくなります。

これは以下の場合に発生します:

  • 通常の固定領域が指定されているが、コントロールが小さくリサイズされた場合
  • 大きすぎる固定領域が指定された場合

86

例えば、グリッドが100行で最大表示行数が30の場合、下部の行60で固定すると40行が固定領域に必要となり、表示領域を超えてアクティブ領域が見えなくなります。

注意: 固定位置がアクティブなスクロール可能領域に十分なスペースを残すようにしてください。適用する前に CanFreeze() で検証することを検討してください。

複数行ヘッダーとの使用

ウィンドウ枠の固定は複数行の列ヘッダーと連携します。ワークシートがスクロールされても、固定された列とその複数行ヘッダーは表示されたままです。複数行ヘッダーを参照してください。

関連トピック


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