組み込みセルタイプ

ReoGridのセルはセルボディをホストできます。セルボディはカスタムコンテンツをレンダリングし、ユーザーインタラクションを処理するコンポーネントです。ReoGridは一般的なUIコントロール用に多くの組み込みセルボディタイプを提供しています。

名前空間

using unvell.ReoGrid.CellTypes;

利用可能なセルタイプ

クラスサンプル説明
ButtonCell361汎用ボタン
CheckBoxCell363チェックボックス(true/false を切り替え)
RadioButtonCell365ラジオボタン(グループ内で相互排他)
HyperlinkCell362自動ナビゲーション付きハイパーリンク
DropdownListCell367単一項目選択用のドロップダウンリスト
ComboListCellテキスト入力とドロップダウン選択のコンボボックス
ProgressCell368プログレスバー(値 0〜1)
NegativeProgressCell370正/負のプログレスバー
ImageCell369画像を表示
ImageButtonCell389ボタン上の画像
DatePickerCell381カレンダードロップダウン付き日付ピッカー
ColumnDropdownListCell列データをソースとして使用するドロップダウンリスト

セルボディの設定

// Via worksheet indexer
sheet[1, 2] = new ButtonCell("Click Me");

// Via cell instance
var cell = sheet.Cells["C3"];
cell.Body = new CheckBoxCell();

ICellBodyインターフェース

すべてのセルボディは ICellBody を実装しています。CellBody 基底クラスはデフォルトの実装を提供します。

メンバー説明
OnSetup(Cell cell)ボディがセルにアタッチされたときに呼び出される
OnPaint(CellDrawingContext dc)セルボディをレンダリング
OnMouseDown/Up/Move/Enter/Leaveマウスインタラクションハンドラー(true を返すとイベントを消費)
OnMouseWheel(e)マウスホイールハンドラー
OnKeyDown/Up(KeyCode)キーボードハンドラー(true を返すと消費)
OnStartEdit()セルが編集モードに入るときに呼び出される(false を返すと防止)
OnEndEdit(data, reason)編集終了時に呼び出される(変更されたデータまたは元のデータを返す)
OnSetData(data)セルデータが設定されたときに呼び出される(変更されたデータまたは元のデータを返す)
OnGotFocus() / OnLostFocus()フォーカス変更ハンドラー
AutoCaptureMouse()マウスイベントをキャプチャするかどうか(デフォルト: true
DisableWhenCellReadonlyセルが読み取り専用のときにボディを無効にするかどうか(デフォルト: true
Cell親セル(読み取り専用、OnSetup 後に利用可能)
Clone()セルボディのコピーを作成

カスタムセルボディの作成については、カスタムセルを参照してください。


ButtonCell

セルのデータをラベルとして表示するクリック可能なボタンです。

ButtonCell

// With default text
sheet[1, 2] = new ButtonCell("Hello");

// Without text — uses cell data as label
sheet[1, 2] = new ButtonCell();
sheet[1, 2] = "Hello";

プロパティ

プロパティ説明
IsPressedboolボタンが現在押されているかどうか

イベント

イベント説明
Clickユーザーがボタンをクリックしたときに発生

メソッド

メソッド説明
PerformClick()プログラムでボタンクリックをシミュレート
var button = new ButtonCell("Hello");
button.Click += (s, e) => MessageBox.Show("Button clicked");
sheet["C3"] = button;

// Programmatic click
button.PerformClick();

ボタンの外観のカスタマイズ

セルスタイルを通じてボタンラベルの色を変更します。

var cell = sheet.Cells["C3"];
cell.Style.TextColor = Color.Blue;
cell.Body = new ButtonCell("Hello");

358


CheckBoxCell

セルのデータを truefalse の間で切り替えるチェックボックスです。

p03

var checkbox = new CheckBoxCell();
sheet["C1"] = new object[] { checkbox, "Auto destroy after 5 minutes." };

コンストラクター

コンストラクター説明
CheckBoxCell()チェックなしのチェックボックスを作成
CheckBoxCell(bool initChecked)初期チェック状態付きのチェックボックスを作成

プロパティ

プロパティ説明
IsCheckedboolチェック状態の取得または設定

チェック状態の取得と設定

// Set via cell data
sheet[1, 2] = true;   // check
sheet[1, 2] = false;  // uncheck

// Get via cell data
bool isChecked = (sheet["C1"] as bool?) ?? false;

// Get/set via checkbox instance
checkbox.IsChecked = true;
bool state = checkbox.IsChecked;

イベント

イベント説明
Clickユーザーがチェックボックスをクリックしたときに発生(Spaceキーでは発生しない)
CheckChangedチェック状態が変更されたとき(マウスまたはキーボード)に発生
checkbox.Click += (s, e) => { /* handle click */ };

checkbox.CheckChanged += (s, e) =>
{
    Console.WriteLine($"Checked: {checkbox.IsChecked}");
};

チェックボックスはセルデータを更新するため、CellDataChanged も発生します。

sheet.CellDataChanged += (s, e) =>
{
    if (e.Cell.Position == new CellPosition("C1"))
        Console.WriteLine("Checkbox changed: " + e.Cell.Data);
};

カスタム描画

OnContentPaint をオーバーライドしてチェックボックスの外観をカスタマイズします。

class MyCheckBox : CheckBoxCell
{
    Image checkedImage, uncheckedImage;

    public MyCheckBox()
    {
        checkedImage = Image.FromFile(@"...");
        uncheckedImage = Image.FromFile(@"...");
    }

    protected override void OnContentPaint(CellDrawingContext dc)
    {
        dc.Graphics.DrawImage(
            this.IsChecked ? checkedImage : uncheckedImage,
            this.ContentBounds);
    }
}

360


RadioButtonCell

CheckBoxCell を継承するラジオボタンです。同じグループ内のラジオボタンは互いにトグルします。

p04

var radio = new RadioButtonCell();
sheet["C3"] = radio;

RadioButtonGroup

同時に1つのラジオボタンのみ選択できるように、共有の RadioButtonGroup を割り当てます。

var group = new RadioButtonGroup();

sheet[10, 2] = new object[,] {
    { new RadioButtonCell() { RadioGroup = group }, "Apple" },
    { new RadioButtonCell() { RadioGroup = group }, "Orange" },
    { new RadioButtonCell() { RadioGroup = group }, "Banana" },
};

RadioButtonGroupメンバー

メンバー説明
RadioButtonsList<RadioButtonCell>このグループ内のすべてのラジオボタン
AddRadioButton(cell)メソッドグループにラジオボタンを手動で追加
Contains(cell)メソッドラジオボタンがこのグループに属するか確認

プロパティ

プロパティ説明
RadioGroupRadioButtonGroupこのラジオボタンが属するグループ
IsCheckedbool選択状態の取得または設定(継承)

イベント

// Click event
radio.Click += (s, e) => { /* handle */ };

// CheckChanged on all radios in a group
group.RadioButtons.ForEach(rb =>
    rb.CheckChanged += (s, e) =>
        Console.WriteLine("Selected: " + sheet[rb.Cell.Row, rb.Cell.Column + 1]));

ユーザーが項目のリストから選択できるドロップダウンリストです。

206

コンストラクター

コンストラクター説明
DropdownListCell()空のドロップダウンリスト
DropdownListCell(params string[] candidates)文字列項目付きのドロップダウン
DropdownListCell(IEnumerable<string> candidates)文字列コレクション付きのドロップダウン
DropdownListCell(ReferenceRange refRange)セル範囲をデータソースとして使用するドロップダウン
var dropdown = new DropdownListCell(
    "Apple", "Orange", "Banana", "Pear",
    "Pumpkin", "Cherry", "Coconut"
);
sheet["B2"] = dropdown;

プロパティ

プロパティ説明
SelectedItemobject現在選択されている項目
SelectedIndexint選択された項目のインデックス

イベント

イベント説明
SelectedItemChanged選択された項目が変更されたときに発生
dropdown.SelectedItemChanged += (s, e) =>
{
    Console.WriteLine("Selected: " + dropdown.SelectedItem);
};

選択された項目はセルデータとしても設定されるため、CellDataChanged も発生します。

詳細はドロップダウンリストセルを参照してください。


ComboListCell

テキスト入力フィールドとドロップダウン選択リストを組み合わせたコンボボックスです。入力中のオートコンプリートをサポートします。

コンストラクター

コンストラクター説明
ComboListCell()空のコンボリスト
ComboListCell(params string[] candidates)文字列項目付き
ComboListCell(IEnumerable<string> candidates)文字列コレクション付き
ComboListCell(ReferenceRange refRange)セル範囲をデータソースとして使用
var combo = new ComboListCell("Apple", "Orange", "Banana");
sheet["B2"] = combo;

プロパティ

プロパティ説明
SelectedItemobject現在選択されている項目
SelectedIndexint選択された項目のインデックス
EnableAutoCompletionbool入力中のオートコンプリートを有効化(デフォルト: true
AutoCompleteCompareratorFunc<string, string, bool>オートコンプリート用のカスタム比較関数
CandidationListSearchProviderFunc<object, IList<string>>候補リスト用のカスタム検索プロバイダー

イベント

イベント説明
SelectedItemChanged選択された項目が変更されたときに発生

DropdownCell はすべてのドロップダウンセルタイプの抽象基底クラスです。カスタムドロップダウンコントロールを作成するために拡張できます。

166

プロパティ

プロパティデフォルト説明
PullDownOnClickboolfalseセルクリックでドロップダウンパネルを開く
DropdownButtonSizeRGSize16x16ドロップダウンボタンのサイズ
DropdownButtonAutoHeightbooltrueボタンの高さをセルに合わせて自動調整
IsDropdownboolfalseドロップダウンパネルが現在開いているかどうか
DropdownPanelHeightint200ドロップダウンパネルの高さ
MinimumDropdownWidthint40ドロップダウンパネルの最小幅
MaximumDropdownWidthint1200ドロップダウンパネルの最大幅
DropdownControlControlnullドロップダウンパネルに表示されるコントロール
DropdownButtonStyleDropdownCellStyleドロップダウンボタンのスタイル

メソッド

メソッド説明
PushDown(bool forceCellEdit = true)ドロップダウンパネルを開く
PullUp()ドロップダウンパネルを閉じる

イベント

イベント説明
DropdownOpenedドロップダウンパネルが開いたときに発生
DropdownClosedドロップダウンパネルが閉じたときに発生

カスタムドロップダウンコントロールの作成についてはカスタムドロップダウンセルの作成方法を参照してください。


ProgressCell

水平プログレスバーを表示します。セル値(0〜1)が塗りつぶし量を決定します。

sheet["B2"] = new ProgressCell();
sheet["B2"] = 0.7;  // 70% progress

プロパティ

プロパティデフォルト説明
TopColorSolidColorLightSkyBlueプログレスバーの上部グラデーション色
BottomColorSolidColorSkyBlueプログレスバーの下部グラデーション色
var progress = new ProgressCell
{
    TopColor = SolidColor.LightGreen,
    BottomColor = SolidColor.Green,
};
sheet["B2"] = progress;
sheet["B2"] = 0.5;

NegativeProgressCell

正の値と負の値の両方のプログレスバーを表示します。正の値は中央から右に、負の値は左に伸びます。

370

sheet["B2"] = new NegativeProgressCell();
sheet["B2"] = -0.3;  // 30% negative progress

プロパティ

プロパティデフォルト説明
PositiveColorSolidColorLightGreen正の値の色
NegativeColorSolidColorLightCoral負の値の色
LinearGradientbooltrueグラデーションシェーディングを適用
DisplayCellTextbooltrueセルテキスト値を表示
LimitedInsideCellbooltrueバーをセル境界内に制限

HyperlinkCell

クリック可能なハイパーリンクです。セルデータを表示テキストとナビゲーションURLとして使用します。

p02

// Auto-navigate to URL on click
sheet[1, 2] = new HyperlinkCell("http://www.google.com", true);

// Or set URL and display text separately
sheet[1, 2] = new HyperlinkCell("http://www.google.com", false);
sheet[1, 2] = "Google";

コンストラクター

コンストラクター説明
HyperlinkCell()自動ナビゲーション有効のハイパーリンク
HyperlinkCell(string url)URLと自動ナビゲーション有効のハイパーリンク
HyperlinkCell(string url, bool autoNavigate)自動ナビゲーション設定可能なハイパーリンク

プロパティ

プロパティデフォルト説明
LinkURLstringnullナビゲーションURL
AutoNavigatebooltrueクリック時に自動的にナビゲート
LinkColorSolidColorBlue未訪問リンクの色
VisitedColorSolidColorPurple訪問済みリンクの色
ActivateColorSolidColorRedリンクが押されているときの色

イベント

イベント説明
Clickリンクがクリックされたときに発生(AutoNavigate が true の場合はナビゲーション後)
var link = new HyperlinkCell("http://myurl.com", false);
link.Click += (s, e) => { /* custom handler */ };
sheet["A1"] = link;

メソッド

メソッド説明
PerformClick()プログラムでクリックをシミュレート

ImageCell

セル内に画像を表示します。

p07

var image = Image.FromFile("photo.jpg");
sheet[2, 6] = new ImageCell(image);

コンストラクター

コンストラクター説明
ImageCell()空の画像セル
ImageCell(Image image)指定された画像の画像セル
ImageCell(Image image, ImageCellViewMode viewMode)表示モード付きの画像セル

プロパティ

プロパティ説明
ImageImage表示する画像
ViewModeImageCellViewMode画像の表示方法

ImageCellViewMode列挙型

説明
Stretchセル境界に合わせて拡大(デフォルト) — 画像が歪む場合があります
Zoomセル境界内に収まるように比例スケーリング
Clip元のサイズを保持し、セル境界でクリップ
var imgCell = new ImageCell(img, ImageCellViewMode.Zoom);
sheet["F6"] = imgCell;

セル配置スタイルで画像位置を制御します。

var cell = sheet.Cells["F6"];
cell.Style.HAlign = ReoGridHorAlign.Center;
cell.Style.VAlign = ReoGridVerAlign.Middle;

ImageButtonCell

画像を表示するボタンです。ButtonCell を継承します。

390

sheet["C3"] = new ImageButtonCell(Image.FromFile("Save-32.png"));

プロパティ

プロパティ説明
ImageImageボタンに表示する画像

ButtonCell から Click イベントと PerformClick() メソッドを継承します。


DatePickerCell

日付選択用の月カレンダー付きドロップダウンセルです。WinFormsのみ。

271

sheet["B2"] = new DatePickerCell();

選択された日付はセルのデータとして保存されます。

注意: DatePickerCell はWinFormsエディションでのみ利用可能です。WPFについては日付ピッカーセルの作成方法を参照してください。


ColumnDropdownListCell

列データを選択ソースとして使用するドロップダウンリストです。WinFormsのみ。

sheet["B2"] = new ColumnDropdownListCell();

セルボディのサイズ

セルボディのサイズは、パディングスタイルを含む親セルによって決定されます。セルボディを大きくするには、複数のセルを結合します。

sheet.MergeRange("B2:D4");
sheet["B2"] = new ButtonCell("Large Button");

プラットフォーム対応

セルタイプWinFormsWPF
ButtonCellはいはい
CheckBoxCellはいはい
RadioButtonCellはいはい
HyperlinkCellはいはい
ImageCellはいはい
ImageButtonCellはいはい
ProgressCellはいはい
NegativeProgressCellはいはい
DropdownCellはいはい
DropdownListCellはいはい
ComboListCellはいはい
ColumnDropdownListCellはいいいえ
DatePickerCellはいいいえ
カスタムセルボディはいはい

デモプロジェクト

組み込みセルタイプの例はデモプロジェクトに含まれています。

WinForms:

62

WPF:

352

関連トピック


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