V4 V5

グリッドの色と、どの要素を表示するかは実行時に変更できます。 アプリのテーマに合わせたり、閲覧専用の見た目にしたりできます。

設定はコントロールの Viewport に対して行い、変更後に RefreshExternal() を呼んで 再描画します。WinForms / WPF / Avalonia の 3 つとも同じ書き方です。

配色

using unvell.ReoGrid.Core.Rendering;

GridTheme theme = viewport.Theme;

theme.Background = 0xFFFFFFFF;            // シートの地色
theme.GridLine = 0xFFE0E0E0;              // 罫線のない部分のグリッド線
theme.HeaderBackground = 0xFFF3F3F3;      // 行・列ヘッダー
theme.HeaderText = 0xFF333333;
theme.SelectionBorder = 0xFF12A4CB;       // 選択枠
theme.SelectionFill = 0x2612A4CB;         // 選択範囲の塗り(上位 8 bit が不透明度)

色は uintARGB です(0xAARRGGBB)。SelectionFill のように半透明にしたい ものは、先頭の 2 桁で不透明度を指定します。

指定できる色

プロパティ対象既定値
Backgroundシートの地色0xFFFFFFFF
GridLineグリッド線0xFFE0E0E0
HeaderBackground行・列ヘッダーの背景0xFFF3F3F3
HeaderTextヘッダーの文字0xFF333333
HeaderLineヘッダーの境界線0xFFCCCCCC
HeaderSelectedBackground選択中の行・列ヘッダー0xFFCDEBF4
FreezeLineウィンドウ枠の固定位置を示す線0xFF808080
SelectionBorder選択枠・フィルハンドル0xFF12A4CB
SelectionFill選択範囲の塗り0x2612A4CB
OutlinePanelBackgroundアウトライン欄の背景0xFFF3F3F3
OutlinePanelBorderアウトライン欄の境界0xFFCCCCCC
OutlineButtonBackground[+] / [-] ボタンの背景0xFFFFFFFF
OutlineButtonBorder[+] / [-] ボタンの枠と接続線0xFF808080
OutlineButtonTextレベル番号ボタンの文字0xFF333333

セルの文字色・背景色はテーマではなくスタイルです (StyleRecord)。テーマが決めるのは、シート自体の 枠まわり(クローム)だけです。

暗い配色にする

// 暗い配色の例。GridTheme を丸ごと差し替えてもよい
viewport.Theme = new GridTheme
{
	Background = 0xFF1E1E1E,
	GridLine = 0xFF3A3A3A,
	HeaderBackground = 0xFF2A2A2A,
	HeaderText = 0xFFDDDDDD,
	HeaderLine = 0xFF3A3A3A,
	HeaderSelectedBackground = 0xFF15414C,
	SelectionBorder = 0xFF12A4CB,
	SelectionFill = 0x3312A4CB,
	OutlinePanelBackground = 0xFF2A2A2A,
	OutlinePanelBorder = 0xFF3A3A3A,
	OutlineButtonBackground = 0xFF1E1E1E,
	OutlineButtonBorder = 0xFF808080,
	OutlineButtonText = 0xFFDDDDDD,
};

暗いテーマにする場合、セルの文字色も合わせて変える必要があります。テーマは クロームの色しか変えないため、既定の黒文字のままだと暗い地色の上で読めません。 シート既定のスタイル(ws.RootStyle)で文字色を指定してください。

ws.RootStyle = ws.RootStyle with { Color = 0xFFDDDDDD };

表示する要素を切り替える

グリッド線・ヘッダー・アウトライン欄はコントロールのプロパティで切り替えます。

control.ShowGridLines = false;    // グリッド線
control.ShowHeaders = false;      // 行・列ヘッダー(A B C / 1 2 3)
control.ShowOutlines = false;     // アウトライン(グループ化)欄

ShowHeadersShowOutlines はスクロール可能な領域の大きさを変えるため、 スクロールバーも自動的に調整されます。

帳票のプレビューのように「シートに見えないシート」を作りたい場合は、 グリッド線とヘッダーを両方切ると近い見た目になります。

より細かい要素は Viewport に直接あります。

viewport.RowHeaderWidth = 60;        // 行ヘッダーの幅(論理ピクセル)
viewport.ColumnHeaderHeight = 24;    // 列ヘッダーの高さ

viewport.ShowSelection = false;      // 選択枠を出さない(閲覧専用の表示に)
viewport.ShowFillHandle = false;     // オートフィルのつまみを出さない
viewport.ShowImages = false;         // 画像を描かない

行ヘッダーの幅は既定 46、列ヘッダーの高さは既定 22 です。行番号が 7 桁になる シート(100 万行)では、既定のままだと数字が詰まることがあります。

変更を画面に反映する

Viewport を直接触った場合は、再描画を明示的に要求してください。

control.RefreshExternal();

コントロールのプロパティ(ShowGridLines など)経由で変更した場合は、 内部で再描画まで行われるため呼ぶ必要はありません。

印刷への影響

テーマの色は画面表示だけに効きます。印刷と PDF 出力は専用のビューポートを 組み立てて描くため、常に既定の配色(白地・グレーのグリッド線)になります。 暗いテーマにしたまま印刷しても、紙が黒くなることはありません。

印刷側で切り替えられるのは、グリッド線とヘッダーを出すかどうかだけです (PrintSettings.ShowGridLines / ShowHeaders印刷とページ設定)。

次に読む

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