MESCIUS InputMan for Windows Forms 12.0J > InputManの使い方 > コンボコントロール > テキストボックスの使い方 > オートコンプリートとオートフィルタ |
オートコンプリート機能を利用すると入力文字列を自動的に補完することが可能です。URL、住所、ファイル名、コマンドなどを頻繁に入力する場合に特に有効です。
また、テキストボックスに入力する値によって、リストボックスに登録されている項目をフィルタリングするオートフィルタ機能も提供されています。
AutoCompleteSource、AutoCompleteMode、AutoCompleteCustomSourceの各プロパティを利用して、オートコンプリート機能を利用することが可能です。オートコンプリート機能は入力された文字を管理されたソース内のすべての文字列を検索して入力文字列を自動的に補完します。
AutoCompleteクラスを利用すると、オートコンプリート機能で表示されるリストのスタイルを設定することが可能です。
(図) 候補リスト内のフォントと検索文字列のハイライトを設定したコンボコントロール
AutoComplete クラスには、オートコンプリート機能で利用する検索モードを設定するMatchingMode プロパティがあり、AutoCompleteMatchingMode 列挙体を参照します。以下の6種類の検索方法から選択することが可能です。
MatchingModeの値 | 説明 |
---|---|
MatchStartWith | 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
MatchAll | 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
AmbiguousMatchStartWith | 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
AmbiguousMatchAll | 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します |
ExactMatchStartWith | 前方一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
ExactMatchAll | 部分一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します |
|
次のサンプルコードは、コンボコントロールのオートコンプリート機能の設定例です。
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())); };