はじめに
ComboBoxに文字を入力したとき、候補を自動で補完したり、ドロップダウンに候補を表示したりできるのが
オートコンプリート機能です。
この機能をコントロールしているのが、
AutoCompleteMode・AutoCompleteSource・AutoCompleteCustomSource
の3つのプロパティです。
前提:
この記事は主に
この記事は主に
ComboBox を対象に説明しますが、TextBox など一部の他コントロールにも同じプロパティがあります。
3つのプロパティの役割
| プロパティ | 役割 | 主な例 |
|---|---|---|
AutoCompleteMode |
補完の「出し方」を決める(サジェスト・補完方式) | Suggest / Append / SuggestAppend |
AutoCompleteSource |
補完候補の「どこから取るか」を決める | ListItems / CustomSource / FileSystem など |
AutoCompleteCustomSource |
CustomSource 使用時の「独自候補リスト」を設定 |
AutoCompleteStringCollection で自由に候補定義 |
AutoCompleteModeプロパティ
候補をどのように表示・補完するかを指定します(列挙体 AutoCompleteMode)。
| 値 | 挙動 |
|---|---|
None |
オートコンプリートを無効にする(既定値)。 |
Suggest |
入力欄の下に「候補一覧」をポップアップ表示(サジェスト)。 |
Append |
入力した文字列に対して、補完候補を入力欄内に自動で補完。 |
SuggestAppend |
Suggest + Append の両方を行う(候補一覧 + 入力欄の補完)。 |
💡 実務では SuggestAppend を使うことが圧倒的に多いです。
「候補も見えるし、入力も楽」といういいとこ取り。
「候補も見えるし、入力も楽」といういいとこ取り。
AutoCompleteSourceプロパティ
補完候補をどこから取ってくるかを指定するプロパティです(列挙体 AutoCompleteSource)。
| 値 | 説明 | ComboBoxでよく使うか |
|---|---|---|
None |
オートコンプリートを行わない。 | △ |
ListItems |
ComboBox の Items コレクションを候補に使う。 |
◎(最も使用頻度が高い) |
CustomSource |
AutoCompleteCustomSource に設定したコレクションを候補に使う。 |
◎(独自候補を使いたいとき) |
FileSystem |
ファイルシステムのパスを候補にする。 | △(TextBox向き) |
HistoryList 等 |
IEの履歴など OS / 環境依存の候補。 | ✕(今はほぼ使わない) |
ComboBox では基本的に ListItems か CustomSource を使うと覚えておいてOKです。
AutoCompleteCustomSourceプロパティ
AutoCompleteSource に CustomSource を選んだ場合に、
自分で用意した候補リスト(AutoCompleteStringCollection)を渡すプロパティです。
候補リストの作成例
var source = new AutoCompleteStringCollection();
source.AddRange(new[]
{
"東京都千代田区",
"東京都中央区",
"東京都港区",
"大阪市北区",
"大阪市中央区"
});
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
comboBox1.AutoCompleteCustomSource = source;
このように設定すると、Items とは別に、候補専用のリストを持たせることができます。
「候補はたくさんあるけど、実際に選べる値は一部だけ」というときにも使えます。
ListItems を使う基本パターン(コンボボックス内の項目を候補に)
「コンボボックスに表示しているリストそのものを候補にしたい」場合の設定です。
comboBox1.Items.AddRange(new[]
{
"Python",
"C#",
"Java",
"JavaScript",
"TypeScript"
});
// 入力補完の設定
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
// DropDown / DropDownList どちらでも使用可能
comboBox1.DropDownStyle = ComboBoxStyle.DropDown; // または DropDownList
📝 挙動の違い
・
・
・
DropDown:ユーザーが自由入力もできる。候補を参考にしつつ、リスト外の文字列も入力可能。・
DropDownList:入力欄は編集不可だが、キー入力で候補選択がしやすくなる。
CustomSource を使う実用例
例:郵便番号の候補を出すが、ComboBoxのItemsには登録しない
var zipCandidates = new AutoCompleteStringCollection();
zipCandidates.AddRange(new[]
{
"100-0001",
"100-0002",
"100-0003",
"530-0001",
"530-0002"
});
// ComboBox 側の表示値は別管理(例えば都道府県)
comboBoxZip.Items.AddRange(new[]
{
"東京都",
"大阪府",
"愛知県"
});
comboBoxZip.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBoxZip.AutoCompleteSource = AutoCompleteSource.CustomSource;
comboBoxZip.AutoCompleteCustomSource = zipCandidates;
このように、「見せたい値」と「補完したい値」を分けることもできます。
ただし、UI 的には少しややこしくなるので、用途を絞って使うのがおすすめです。
よくある注意点とハマりポイント
- AutoCompleteが動かない
・AutoCompleteModeがNoneになっていないか?
・AutoCompleteSourceがNoneのままになっていないか?
・CustomSource選択時はAutoCompleteCustomSourceが空でないか? - DropDownStyle = Simple のとき
・テキストボックス + リスト常時表示のスタイルのため、挙動がやや特殊。
基本的にはDropDownかDropDownListで使うのが無難です。 - 表示件数が多すぎる
・CustomSource に数千件以上入れると、サジェスト表示が重くなることがあります。
→ 件数を絞る・フィルタリングする・TextBox + 独自検索に切り替えるなどを検討。 - 大文字小文字の扱い
・オートコンプリートは基本的に大文字小文字を区別せずにマッチします。
まとめ
AutoCompleteMode… 補完の出し方(Suggest / Append / SuggestAppend)を決める。AutoCompleteSource… 候補の取得元(ListItems / CustomSource など)を決める。AutoCompleteCustomSource…CustomSource使用時の独自候補リスト(AutoCompleteStringCollection)。- コンボボックスでは ListItems + SuggestAppend が一番使いやすい定番設定。
- 大量データや特殊な候補を扱うときは CustomSource の使いどころ。
これら3つのプロパティを組み合わせることで、入力が早く、ミスも減るコンボボックスを作ることができます。
まずは ListItems + SuggestAppend から試して、慣れてきたら CustomSource で独自候補にも挑戦してみてください。
Please follow and like us:

コメント