V5 ドキュメントはプレビュー版です。正式リリース(2026 年 8 月 19 日)まで内容が更新されることがあります。
V4 V5

セル型は、セルの描画とクリック時の振る舞いを差し替える仕組みです。 チェックボックス、ドロップダウン、進捗バーなどを表現します。

組み込みの 6 種類のセル型

記述子は共有される

V4 はセルごとに「body」インスタンスを代入していたため、セル数ぶんの実体ができました。 V5 はフライウェイトな記述子を範囲に割り当てます

using unvell.ReoGrid.Core;
using unvell.ReoGrid.Core.CellTypes;

// 範囲に割り当てる — 100 万行のチェックボックス列でもエントリは 1 個
ws.SetCellType(RangePosition.Parse("A1:A1048576"), CheckboxCellType.Instance);

// 単一セル
ws.SetCellType(2, 1, CheckboxCellType.Instance);
ws.Cell("C3").SetCellType(new ProgressCellType(max: 100));

ws.SetCellType(2, 1, null);      // 解除

104 万行のチェックボックス列でも、テーブルに載るのは範囲エントリ 1 個と共有記述子 1 個です。

状態はセル値に持つ

記述子は状態を持ちません。チェックの有無も選択値も進捗率も、通常のセル値です。

// 状態はセル値。記述子は共有され、状態を持たない
ws.SetCellType(0, 0, CheckboxCellType.Instance);
ws.SetBoolean(0, 0, true);                    // チェック済み

ws.SetCellType(1, 0, new DropdownCellType(["A", "B"]));
ws.SetText(1, 0, "B");                        // 選択値

ws.SetCellType(2, 0, new ProgressCellType(max: 100));
ws.SetNumber(2, 0, 65);                       // 進捗 65%

この設計には実利があります。

  • 数式から普通に参照できる。 COUNTIF(A:A, TRUE) でチェック数を数えられます
  • 保存が単純。 値は値、型は型として別々に往復します
  • ソート・フィルタが効く。 セル型を意識した特別扱いが要りません

描画は可視範囲のみ

セル型の描画とクリック判定は可視セルに対してのみ行われます。範囲がどれだけ大きくても、 コストは画面に映っている数に比例します。

割り当てを確認する

CellTypeDescriptor? type = ws.GetCellType(0, 0);
if (type != null)
	Console.WriteLine(type.TypeName);

int entries = ws.CellTypes.Count;      // 範囲エントリの数(セル数ではない)
bool any = ws.HasCellTypes;

ws.CellTypes.Count範囲エントリの数であり、セル型が付いたセルの数ではありません。

UI 層との分担

コアは UI に依存しないため、記述子は抽象的な結果を返すだけです。

記述子が返すものコントロールが実体化するもの
SetValueセル値の更新
OpenDropdownドロップダウンのポップアップ表示
Navigate既定のブラウザでリンクを開く
RaiseButtonCellButtonClicked イベントの発火

ボタンのクリックは、V4 のような記述子ごとのイベントではなく コントロールの CellButtonClicked で受けます。

構造変更への追従

行や列を挿入・削除すると、割り当て範囲は自動的に追従します。

次に読む

  • 組込のセル型
  • カスタムセル型
ページの内容は役に立ちましたか?