パッケージは unvell.ReoGrid.One、名前空間は unvell.ReoGrid.WinForms です。 描画は GDI+(既定)と Direct2D から選べます(下記「描画方式」)。

導入とサンプルは WinForms で始める を参照してください。 本ページはメンバーの一覧です。

ワークブック

メンバー内容
Workbook保持しているワークブック
ActiveWorksheet表示中のシート
SetWorksheet(ws)表示するシートを切り替える
LoadWorkbook(wb)ワークブックごと差し替える
NewWorkbook()新規(Sheet1 1 枚)
LoadJson(json)reogrid-json から読み込む
WorkbookChanged / ActiveSheetChangedイベント

new ReoGridControl() は Sheet1 を 1 枚持った状態で始まります。

選択

メンバー内容
Selection / ActiveCell選択範囲・アクティブセル
MoveTo(row, col)移動
SelectionChangedイベント

選択範囲への一括操作は 選択とアクティブセル にまとめてあります。

編集

メンバー内容
BeginEdit(initialText) / CancelEdit() / IsEditing編集の開始・取り消し
GetActiveCellInput() / SetActiveCellInput(text)数式バー向けの入出力
ToggleEditingBold() ほか編集中の書式変更

履歴

Undo() / Redo() / CanUndo / CanRedo / HistoryChanged。 Ctrl+Z / Ctrl+Y は配線済みです。

表示

メンバー内容
Zoom / ZoomChanged表示倍率(Ctrl+ホイールも有効)
SetFreeze(rows, cols)ウィンドウ枠の固定
ShowGridLines / ShowHeaders / ShowOutlines表示切り替え
DpiScaleDeviceDpi / 96

その他のイベント

イベント内容
ContextMenuRequested右クリック。ホスト側でメニューを構築する
CellButtonClickedボタンセル型のクリック

組込のコンテキストメニューはありません。ContextMenuRequested を受けて自前で構築します (ReoGrid.Studio が参照実装です)。

描画方式(GDI+ / Direct2D)

メンバー内容
Renderer描画方式。GridRenderer.Gdi(既定)または GridRenderer.Direct2D
ActiveRenderer実際に描いている方式。Direct2D を使えない環境では Gdi
using System.Drawing.Imaging;
using unvell.ReoGrid.WinForms;

grid.Renderer = GridRenderer.Direct2D;

// Direct2D を使えない環境(ネイティブ DLL が無い、Direct3D のデバイスが作れない)では GDI+ のまま
if (grid.ActiveRenderer != GridRenderer.Direct2D)
	Console.WriteLine("GDI+ で描画しています");

Direct2D は GPU で描画し、文字を DirectWrite で組みます。表示するセルが多いほど差が出て、 スクロール時の全面再描画は GDI+ の約 3.5 倍です(1400×900 の画面で 1 フレーム 3.6 ms → 1.0 ms)。

  • セル内エディタ、列幅・行高の自動調整、はみ出し表示も、グリッドと同じ方式で文字を測ります。 描画と計測が食い違うことはありません。
  • 格子線と罫線は、100〜200% のどの倍率でも GDI+ と同じピクセルに描かれます。 文字は DirectWrite のアンチエイリアスになるため、GDI+ とは見た目がわずかに異なります。
  • 実行中に切り替えられます。編集中のセルもそのまま続けられます。
  • 印刷(CreatePrintDocument)と RenderTo(graphics, …) は、どちらの方式でも GDI+ で描きます。

動作条件と配布

x64 または x86 のプロセスで動作します(ARM64 では GDI+ のままです)。GPU が使えない環境でも、 Direct3D のソフトウェア描画(WARP)で動きます。

描画にはパッケージ同梱のネイティブ DLL を使います。

プロセスファイル
x64runtimes/win-x64/native/d2dlib64.dll
x86runtimes/win-x86/native/d2dlib32.dll

NuGet で参照していれば、ビルドと発行の出力に自動でコピーされます(単一ファイル発行も可)。 ポータルの zip を使う場合は、runtimes フォルダーを unvell.ReoGrid.One.dll の隣にそのまま置いてください。 DLL が無いときは、Renderer を Direct2D にしても GDI+ で描画します。

高 DPI

PerMonitorV2 を有効にすることを推奨します。

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

これにより Windows がビットマップ拡大する代わりに物理ピクセルのクライアント領域が渡され、 コントロールが自前でスケールした鮮明な描画になります。

任意の Graphics へ描く

メンバー内容
RenderTo(graphics, width, height, scale)論理サイズを指定して描画
RenderFrame(graphics, physicalWidth, physicalHeight)物理ピクセル指定(ズーム込み)
RenderToBitmap(width, height, scale)選択中の描画方式(ActiveRenderer)のまま、新しい Bitmap に描く

サムネイル生成やヘッドレスでの画像出力に使えます。どれもウィンドウを必要としません。

// 論理サイズ 800×500 を 1.5 倍(1200×750 px)で。描画方式は ActiveRenderer に従う
using var bitmap = grid.RenderToBitmap(800, 500, scale: 1.5f);
bitmap.Save("sheet.png", ImageFormat.Png);

印刷

using var doc = control.CreatePrintDocument();
doc.Print();

PrintDocument を返すため、標準の印刷ダイアログやプレビューにそのまま渡せます。 詳細は 印刷とページ設定 を参照してください。

次に読む

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