ドロップダウンリストセル

DropdownListCell は単一項目選択用のドロップダウンリストを表示する組み込みセルボディです。DropdownCell を拡張し、ドロップダウンパネルのインフラストラクチャーを継承しています。

名前空間

using unvell.ReoGrid.CellTypes;

ドロップダウンリストセルの作成

var sheet = grid.CurrentWorksheet;

var dropdown = new DropdownListCell(
    "Apple", "Orange", "Banana", "Pear",
    "Pumpkin", "Cherry", "Coconut"
);

sheet["B2"] = dropdown;

結果: 196

コンストラクター

コンストラクター説明
DropdownListCell()空のドロップダウンリスト
DropdownListCell(params string[] candidates)文字列項目で作成
DropdownListCell(IEnumerable<string> candidates)コレクションで作成
DropdownListCell(CellValueListSource source)セル値リストソースから作成
DropdownListCell(ReferenceRange refRange)セル範囲をデータソースとして作成

セル範囲をデータソースとして使用

ドロップダウンリストをセル範囲にバインドして、項目が自動的に更新されるようにできます。

// Items come from cells A1:A10
var dropdown = new DropdownListCell(sheet.Ranges["A1:A10"]);
sheet["C1"] = dropdown;

変更可能なリストの使用

List<string> を渡して項目を同期させます。

var items = new List<string> { "Alpha", "Beta", "Gamma" };
var dropdown = new DropdownListCell(items);
sheet["B2"] = dropdown;

// Add items later — they appear in the dropdown
items.Add("Delta");

プロパティ

プロパティ説明
SelectedItemobject現在選択されている項目
SelectedIndexint選択された項目のインデックス
プロパティデフォルト説明
PullDownOnClickboolfalseセルクリック時にドロップダウンを開く(ボタンだけでなく)
DropdownButtonSizeRGSize16x16ドロップダウンボタンのサイズ
DropdownButtonAutoHeightbooltrueボタンの高さをセルに合わせて自動調整
IsDropdownboolドロップダウンパネルが現在開いているかどうか(読み取り専用)
DropdownPanelHeightint200ドロップダウンパネルの高さ(ピクセル)
MinimumDropdownWidthint40ドロップダウンパネルの最小幅
MaximumDropdownWidthint1200ドロップダウンパネルの最大幅
DropdownControlControlパネルに表示されるプラットフォームコントロール
DropdownButtonStyleDropdownCellStyleドロップダウンボタンのビジュアルスタイル
プロパティ説明
ArrowNormalColorSolidColor?矢印の色(null の場合はワークシートのテキスト色を使用)
ArrowDisableColorSolidColor?無効時の矢印の色

イベント

イベント説明
SelectedItemChanged選択された項目が変更されたときに発生
DropdownOpenedドロップダウンパネルが開いたときに発生(継承)
DropdownClosedドロップダウンパネルが閉じたときに発生(継承)
dropdown.SelectedItemChanged += (s, e) =>
{
    Console.WriteLine("Selected: " + dropdown.SelectedItem);
};

ドロップダウンリストセルは項目が選択された後にセルデータを更新するため、ワークシートの CellDataChanged イベントも発生します。

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

メソッド

メソッド説明
PushDown(bool forceCellEdit = true)プログラムでドロップダウンパネルを開く
PullUp()ドロップダウンパネルを閉じる
Clone()このセルボディのコピーを作成
// Open the dropdown programmatically
dropdown.PushDown();

// Close it
dropdown.PullUp();

デフォルトデータの設定

デフォルト値を設定またはセルデータを変更するには:

sheet["B2"] = "Apple";

結果: 197

ドロップダウンセルのサイズ変更

列幅の変更

sheet.ColumnHeaders["B"].Width = 120;

198

行高さの変更

sheet.RowHeaders[1].Height = 40;

199-2

セルの結合

sheet.MergeRange("B2:C2");

200

パディングスタイルの設定

セル内のドロップダウンコントロールを縮小します。

sheet.Cells["B2"].Style.Padding = new Padding(0, 0, 10, 0);

201

ドロップダウンボタンのサイズ変更

dropdown.DropdownButtonAutoHeight = false;
dropdown.DropdownButtonSize = new System.Drawing.Size(40, 15);

DropdownButtonAutoHeighttrue(デフォルト)の場合、ボタンはセルの高さに合わせて伸びます。false に設定すると固定サイズを使用します。

202

セル罫線の設定

ドロップダウンセルはデフォルトでは罫線を表示しません。明示的に罫線を追加します。

sheet.Ranges["B2"].BorderOutside = BorderStyle.GraySolid;

205

セルクリックで開く

デフォルトでは、ドロップダウンはドロップダウンボタンがクリックされたときにのみ開きます。PullDownOnClick を設定すると、セル内の任意の場所をクリックして開くことができます。

dropdown.PullDownOnClick = true;

WPFスタイリング

WPFでは、Style プロパティを通じてリストの外観をカスタマイズします。

#if WPF
dropdown.Style.TextColor = SolidColor.DarkBlue;
dropdown.Style.BackColor = SolidColor.LightYellow;
dropdown.Style.FontSize = 14;
dropdown.Style.FontWeight = FontWeights.Bold;
dropdown.Style.HorizontalAlignment = HorizontalAlignment.Left;
dropdown.Style.Padding = new PaddingValue(4, 4, 4, 4);
#endif
プロパティ説明
TextColorSolidColorリスト内のテキスト色
BackColorSolidColor背景色
FontFontFamilyフォントファミリー
FontWeightFontWeightフォントウェイト
FontSizedoubleフォントサイズ
FontStyleFontStyleフォントスタイル(斜体など)
HorizontalAlignmentHorizontalAlignment項目の水平配置
VerticalAlignmentVerticalAlignment項目の垂直配置
PaddingPaddingValue項目のパディング
Reset()メソッドデフォルトスタイルにリセット
CopyFrom(style)メソッド別のスタイルからコピー

カスタムドロップダウンボタンの描画

OnPaintDropdownButton をオーバーライドしてボタンの外観をカスタマイズします。

class MyDropdownListCell : DropdownListCell
{
    public MyDropdownListCell(params string[] items) : base(items) { }

    protected override void OnPaintDropdownButton(CellDrawingContext dc, Graphics.Rectangle buttonRect)
    {
        dc.Graphics.DrawAndFillRectangle(buttonRect, SolidColor.DeepSkyBlue, new SolidColor("#BEE7F1"));

        var centerPoint = new Graphics.Point(buttonRect.Left + buttonRect.Width / 2,
            buttonRect.Top + buttonRect.Height / 2);

        GraphicsToolkit.FillTriangle(dc.Graphics.PlatformGraphics, 9,
            centerPoint, GraphicsToolkit.TriangleDirection.Down,
            this.IsDropdown ? Pens.SkyBlue : Pens.DarkSlateBlue);
    }
}

203

カスタムドロップダウンセルの作成

DropdownCell を拡張して、パネル内に任意のコントロールを配置するカスタムドロップダウンセルを作成します。

166

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

クラス階層

CellBody
  └─ DropdownCell (base — panel, button, open/close)
       └─ DropdownListBaseCell (candidate source)
            ├─ DropdownListCell (selection-only list)
            └─ ComboListCell (editable combo with auto-complete)

関連トピック


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