はじめに
DropDownStyle は、ComboBox の入力方法と見た目を決める最重要プロパティです。
「ユーザーに自由入力を許すのか」「一覧からのみ選ばせるのか」「常に一覧を表示するのか」をここで制御します。
DropDownStyleプロパティとは?
ComboBox.DropDownStyle は ComboBoxStyle 列挙体(DropDown / DropDownList / Simple)のいずれかを設定します。
| 値 | 見た目 / 入力 | 主な用途 |
|---|---|---|
DropDown |
テキストボックス + ▼。 ユーザーが自由入力でき、リストからも選べる。 |
あいまい検索、サジェスト入力、既定値 + ユーザー追記 |
DropDownList |
テキスト編集不可(グレー)。 リストから選択のみ。 |
マスタからの固定選択(入力ミスを防ぐ) |
Simple |
テキストボックス + 常時リスト表示(縦に開いた形)。 | 項目数が少ないプリセット、一覧を見ながらの編集 |
要点
・自由入力を禁止したい→
・自由入力 + 候補提示したい→
・常に候補を見せたい→
・自由入力を禁止したい→
DropDownList・自由入力 + 候補提示したい→
DropDown(AutoCompleteと相性◎)・常に候補を見せたい→
Simple
基本の使い方
コードで設定
// 自由入力 + リスト選択(既定)
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
// 固定選択(自由入力禁止)
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
// 常時リスト表示
comboBox1.DropDownStyle = ComboBoxStyle.Simple;
デザイナーで設定
- ComboBox を選択
- プロパティウィンドウ → DropDownStyle を目的の値に変更
AutoCompleteとの連携(DropDown時の鉄板設定)
DropDown では、ユーザーのタイプに合わせて候補を自動補完できます。
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; // 候補表示 + 補完
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; // Itemsから候補
DropDownList でも AutoComplete は機能します(テキスト編集は不可だが、候補選択はできる)。
実用例
A) 固定選択にしたい(入力ミスを防ぐ)
comboBox1.Items.AddRange(new[] { "未着手", "進行中", "保留", "完了" });
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; // 自由入力禁止
B) サジェスト入力(曖昧検索っぽく)
comboBox1.Items.AddRange(new[] { "Tokyo", "Osaka", "Nagoya", "Fukuoka" });
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
C) 常時リスト表示で即時選択
comboBox1.DropDownStyle = ComboBoxStyle.Simple; // リストが常に表示される
comboBox1.Height = 150; // リストの高さはコントロールの高さに依存
comboBox1.Items.AddRange(new[] { "Low", "Middle", "High" });
関連プロパティとの関係
- MaxDropDownItems … ドロップダウン時に同時表示する最大行数(
Simpleには非適用)。 - IntegralHeight … アイテムを行単位で切らずに表示(
falseでピクセル合わせ優先)。 - DropDownWidth … ドロップダウンの幅(文字が切れるときに拡げる)。
- Sorted … 追加後に自動昇順ソート(ローカライズ環境では並び順に注意)。
キーボード操作の挙動
- Alt + ↓ … ドロップダウンを開く(
Simpleは常時表示のため対象外)。 - 文字キー …
DropDownはテキストへ入力、DropDownListは一致項目へジャンプ。 - Enter … 現在選択を確定(
DropDownではテキスト確定にも)。
よくある落とし穴と対策
- 自由入力を禁止したいのに入力できる:
DropDownStyle = DropDownListにする(DropDownのままでは禁止不可)。 - リストが常時表示されない:
Simpleを使う。高さはコントロールのHeightで調整。 - 長い文字が切れる:
DropDownWidthを広げる、または項目テキストを省略表示にする。 - AutoCompleteが効かない:
AutoCompleteSource = ListItemsとAutoCompleteModeの組合せを確認。
サンプル:スタイル切り替えUI
using System;
using System.Windows.Forms;
namespace ComboBoxDropDownStyleSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new[] { "Apple", "Banana", "Cherry", "Durian" });
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
radioDropDown.CheckedChanged += (_, __) => ApplyStyle();
radioDropDownList.CheckedChanged += (_, __) => ApplyStyle();
radioSimple.CheckedChanged += (_, __) => ApplyStyle();
}
private void ApplyStyle()
{
if (radioDropDown.Checked)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
else if (radioDropDownList.Checked)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; // 有効
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
else if (radioSimple.Checked)
{
comboBox1.DropDownStyle = ComboBoxStyle.Simple;
comboBox1.Height = 160; // リストが見えるように
}
}
}
}
まとめ
DropDownStyleは「入力可否・見た目」を決める中核プロパティ。DropDown=自由入力可、DropDownList=選択のみ、Simple=常時表示。- AutoComplete を組み合わせると検索性が大幅に向上。
- 表示幅・行数・ソートなど周辺プロパティで体験を最適化。
Please follow and like us:

コメント