AutoCompleteSource、AutoCompleteMode、AutoCompleteCustomSourceの各プロパティを利用して、オートコンプリート機能を利用することが可能です。オートコンプリート機能は入力された文字を管理されたソース内のすべての文字列を検索して入力文字列を自動的に補完します。
オートコンプリートウィンドウのスタイル
AutoCompleteクラスを利用すると、オートコンプリート機能で表示されるリストのスタイルを設定することが可能です。

(図) 候補リスト内のフォントと検索文字列のハイライトを設定したコンボコントロール
検索モード
AutoComplete クラスには、オートコンプリート機能で利用する検索モードを設定するMatchingMode プロパティがあり、AutoCompleteMatchingMode 列挙体を参照します。以下の6種類の検索方法から選択することが可能です。
MatchingModeの値 |
説明 |
MatchStartWith |
前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
MatchAll |
部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
AmbiguousMatchStartWith |
前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
AmbiguousMatchAll |
部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
ExactMatchStartWith |
前方一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
ExactMatchAll |
部分一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
 |
- AutoCompleteMatchingModeプロパティのうち、部分一致を行うMatchAll、AmbiguousMatchAll、およびExactMatchAllはAutoCompleteMode プロパティがAutoCompleteMode.SuggestAppend、Appendのときにはサポートされません。
AutoCompleteMatchingModeプロパティとAutoCompleteModeプロパティの設定がサポートされない組み合わせの場合、次のような動作が行われます。
- AutoCompleteModeプロパティが先に設定され、その後AutoCompleteMatchingModeプロパティが設定された場合は、 AutoCompleteModeプロパティがNoneに設定されます。
- AutoCompleteMatchingMode プロパティが先に設定され、その後AutoCompleteModeプロパティが設定された場合は、 例外が発生します。
- 候補リスト内に同じ候補が存在した場合には、あとの候補が検索対象になります。
|
次のサンプルコードは、コンボコントロールのオートコンプリート機能の設定例です。
GcComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
GcComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
GcComboBox1.AutoComplete.HighlightStyle.BackColor = Color.AliceBlue
GcComboBox1.AutoComplete.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.ExactMatchStartWith
gcComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
gcComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
gcComboBox1.AutoComplete.HighlightStyle.BackColor = Color.AliceBlue;
gcComboBox1.AutoComplete.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.ExactMatchStartWith;
コントロールのAutoFilter プロパティが参照するAutoFilter クラスのEnabled プロパティをTrue に設定すると、コンボコントロールのオートフィルタ機能を使用できます。

(図) オートフィルタ機能でリストをフィルタしたコンボコントロール
 |
オートフィルタ機能は、コンボコントロールのDropDownStyleプロパティがDropDownListに設定されている場合は無効になります。 |
フィルタリングの設定
MinimumPrefixLength プロパティで設定された値の文字数が入力されたときにフィルタリングを開始します。また、一度のフィルタリングで取得可能な最大項目数は、MaxFilteredItems プロパティで設定できます。さらに、Interval プロパティでフィルタリング動作を開始するまでの時間(ミリ秒)を指定することができます。
検索対象カラムの設定
オートフィルタ機能では検索対象のカラムを設定できます。MatchingSource プロパティをFilterMatchingSource.AllSubItems に設定すると、リスト内の全てのカラムを対象に検索を行い、FilterMatchingSource.ControlText を設定するとTextSubItemIndex プロパティに設定したText プロパティ設定に使用されるカラム、もしくはTextFormat プロパティに設定した書式を対象に検索を行います。
検索モード
AutoFilter クラスには、オートフィルタ機能で利用する検索モードを6種類の検索方法から設定するMatchingMode プロパティがあります。なお、この検索モードはオートコンプリート機能と共通です。
MatchingModeの値 |
説明 |
MatchStartWith |
前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
MatchAll |
部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
AmbiguousMatchStartWith |
前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
AmbiguousMatchAll |
部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
ExactMatchStartWith |
前方一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
ExactMatchAll |
部分一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
次のサンプルコードは、コンボコントロールのフィルタリング動作の設定例です。
GcComboBox1.AutoFilter.Enabled = True
GcComboBox1.AutoFilter.Interval = 500
GcComboBox1.AutoFilter.MaxFilteredItems = 8
GcComboBox1.AutoFilter.MinimumPrefixLength = 1
GcComboBox1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith
GcComboBox1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems
gcComboBox1.AutoFilter.Enabled = true;
gcComboBox1.AutoFilter.Interval = 500;
gcComboBox1.AutoFilter.MaxFilteredItems = 8;
gcComboBox1.AutoFilter.MinimumPrefixLength = 1;
gcComboBox1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith;
gcComboBox1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems;
オートフィルタイベント
ExtractedItemsIndicesプロパティで、オートフィルタによって抽出されたアイテムを取得します。また、ExtractedItemsIndicesChangedイベントにて、ExtractedItemsIndicesプロパティが変更された通知を受け取ります。
次のサンプルコードは、コンボコントロールのフィルタリング動作の設定例です。
GcComboBox1.AutoFilter.Enabled = True
GcComboBox1.AutoFilter.Interval = 500
GcComboBox1.AutoFilter.MaxFilteredItems = 8
GcComboBox1.AutoFilter.MinimumPrefixLength = 1
GcComboBox1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith
GcComboBox1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems
AddHandler GcComboBox1.ExtractedItemsIndicesChanged,
Sub(s1 As Object, e1 As EventArgs)
MessageBox.Show(String.Join(",", GcComboBox1.ExtractedItemsIndices.ToArray()))
End Sub
gcComboBox1.AutoFilter.Enabled = true;
gcComboBox1.AutoFilter.Interval = 500;
gcComboBox1.AutoFilter.MaxFilteredItems = 8;
gcComboBox1.AutoFilter.MinimumPrefixLength = 1;
gcComboBox1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith;
gcComboBox1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems;
gcComboBox1.ExtractedItemsIndicesChanged += (o, e) => {
MessageBox.Show(String.Join(",", gcComboBox1.ExtractedItemsIndices.ToArray()));
};