DropdownListCell は単一項目選択用のドロップダウンリストを表示する組み込みセルボディです。DropdownCell を拡張し、ドロップダウンパネルのインフラストラクチャーを継承しています。
名前空間
using unvell.ReoGrid.CellTypes;
ドロップダウンリストセルの作成
var sheet = grid.CurrentWorksheet;
var dropdown = new DropdownListCell(
"Apple", "Orange", "Banana", "Pear",
"Pumpkin", "Cherry", "Coconut"
);
sheet["B2"] = dropdown;
結果:

コンストラクター
| コンストラクター | 説明 |
|---|---|
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");
プロパティ
DropdownListCellのプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
SelectedItem | object | 現在選択されている項目 |
SelectedIndex | int | 選択された項目のインデックス |
DropdownCellから継承
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
PullDownOnClick | bool | false | セルクリック時にドロップダウンを開く(ボタンだけでなく) |
DropdownButtonSize | RGSize | 16x16 | ドロップダウンボタンのサイズ |
DropdownButtonAutoHeight | bool | true | ボタンの高さをセルに合わせて自動調整 |
IsDropdown | bool | — | ドロップダウンパネルが現在開いているかどうか(読み取り専用) |
DropdownPanelHeight | int | 200 | ドロップダウンパネルの高さ(ピクセル) |
MinimumDropdownWidth | int | 40 | ドロップダウンパネルの最小幅 |
MaximumDropdownWidth | int | 1200 | ドロップダウンパネルの最大幅 |
DropdownControl | Control | — | パネルに表示されるプラットフォームコントロール |
DropdownButtonStyle | DropdownCellStyle | — | ドロップダウンボタンのビジュアルスタイル |
DropdownCellStyleのプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
ArrowNormalColor | SolidColor? | 矢印の色(null の場合はワークシートのテキスト色を使用) |
ArrowDisableColor | SolidColor? | 無効時の矢印の色 |
イベント
| イベント | 説明 |
|---|---|
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";
結果:

ドロップダウンセルのサイズ変更
列幅の変更
sheet.ColumnHeaders["B"].Width = 120;

行高さの変更
sheet.RowHeaders[1].Height = 40;

セルの結合
sheet.MergeRange("B2:C2");

パディングスタイルの設定
セル内のドロップダウンコントロールを縮小します。
sheet.Cells["B2"].Style.Padding = new Padding(0, 0, 10, 0);

ドロップダウンボタンのサイズ変更
dropdown.DropdownButtonAutoHeight = false;
dropdown.DropdownButtonSize = new System.Drawing.Size(40, 15);
DropdownButtonAutoHeight が true(デフォルト)の場合、ボタンはセルの高さに合わせて伸びます。false に設定すると固定サイズを使用します。

セル罫線の設定
ドロップダウンセルはデフォルトでは罫線を表示しません。明示的に罫線を追加します。
sheet.Ranges["B2"].BorderOutside = BorderStyle.GraySolid;

セルクリックで開く
デフォルトでは、ドロップダウンはドロップダウンボタンがクリックされたときにのみ開きます。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
DropdownListStyleのプロパティ(WPFのみ)
| プロパティ | 型 | 説明 |
|---|---|---|
TextColor | SolidColor | リスト内のテキスト色 |
BackColor | SolidColor | 背景色 |
Font | FontFamily | フォントファミリー |
FontWeight | FontWeight | フォントウェイト |
FontSize | double | フォントサイズ |
FontStyle | FontStyle | フォントスタイル(斜体など) |
HorizontalAlignment | HorizontalAlignment | 項目の水平配置 |
VerticalAlignment | VerticalAlignment | 項目の垂直配置 |
Padding | PaddingValue | 項目のパディング |
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);
}
}

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

カスタムドロップダウンセルの作成方法を参照してください。
クラス階層
CellBody
└─ DropdownCell (base — panel, button, open/close)
└─ DropdownListBaseCell (candidate source)
├─ DropdownListCell (selection-only list)
└─ ComboListCell (editable combo with auto-complete)
関連トピック
- 組み込みセルタイプ — すべてのセルタイプの概要
- コンボリストセル — 編集可能なコンボボックスバリアント
- カスタムセル — カスタムセルボディの作成
- カスタムドロップダウンセルの作成方法 — カスタムドロップダウンチュートリアル