冻结窗格允许您锁定行和/或列,使其在用户滚动时保持可见。这对于在处理大型数据集时保持标题或标签可见非常有用。
基本冻结
在指定的单元格位置冻结行和列:
var sheet = grid.CurrentWorksheet;
// 冻结到第 5 行(第 0~4 行固定在顶部)
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) | 在索引和指定区域处冻结 |
示例
// 在地址处冻结
sheet.FreezeToCell("B5");
// 在 CellPosition 处冻结
sheet.FreezeToCell(new CellPosition(5, 1));
// 在第 3 行第 2 列冻结
sheet.FreezeToCell(3, 2);
冻结区域
ReoGrid 支持在一条或两条相邻边冻结。使用 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 | 工作表当前是否已冻结(只读) |
// 获取当前冻结状态
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()进行验证。
配合多行标题使用
冻结窗格可以与多行列标题配合使用。当工作表滚动时,冻结的列及其多行标题保持可见。参见多行标题。