グリッドの色と、どの要素を表示するかは実行時に変更できます。 アプリのテーマに合わせたり、閲覧専用の見た目にしたりできます。
設定はコントロールの 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 が不透明度)
色は uint の ARGB です(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; // アウトライン(グループ化)欄
ShowHeaders と ShowOutlines はスクロール可能な領域の大きさを変えるため、
スクロールバーも自動的に調整されます。
帳票のプレビューのように「シートに見えないシート」を作りたい場合は、 グリッド線とヘッダーを両方切ると近い見た目になります。
より細かい要素は 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 — 印刷とページ設定)。