MESCIUS MultiRow for Windows Forms 12.0J
オートコンプリートとオートフィルタ

オートコンプリート機能を利用すると入力文字列を自動的に補完することが可能です。URL、住所、ファイル名、コマンドなどを頻繁に入力する場合に特に有効です。
また、テキストボックスに入力する値によって、リストボックスに登録されている項目をフィルタリングするオートフィルタ機能も提供されています。

オートコンプリート機能
AutoCompleteSourceAutoCompleteModeAutoCompleteCustomSourceの各プロパティを利用して、オートコンプリート機能を利用することが可能です。オートコンプリート機能は入力された文字を管理されたソース内のすべての文字列を検索して入力文字列を自動的に補完します。
  • 検索モードの設定で AutoCompleteMatchingMode プロパティと AutoCompleteMode プロパティの組み合わせがサポートされない組み合わせの場合、InputManCell では例外が発生します。

オートコンプリートウィンドウのスタイル

AutoCompleteクラスを利用すると、オートコンプリート機能で表示されるリストのスタイルを設定することが可能です。



(図) 候補リスト内のフォントと検索文字列のハイライトを設定したGcComboBoxCell

検索モード

AutoCompleteクラスには、オートコンプリート機能で利用する検索モードを設定するMatchingModeプロパティがあり、6種類の検索方法から選択することが可能です。     

MatchingModeの値 説明
MatchStartWith 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
MatchAll 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
AmbiguousMatchStartWith 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します
AmbiguousMatchAll 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します
ExactMatchStartWith 前方一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
ExactMatchAll 部分一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します

AutoCompleteMatchingModeプロパティのうち、部分一致を行うMatchAll、AmbiguousMatchAll、およびExactMatchAllはAutoCompleteModeプロパティがAutoCompleteMode.SuggestAppend、Append のときにはサポートされません。
AutoCompleteMatchingModeプロパティとAutoCompleteModeプロパティの組み合わせがサポートされない組み合わせの場合、下記のような動作が行われます。

  • AutoCompleteModeプロパティが先に設定され、その後AutoCompleteMatchingModeプロパティが設定された場合は、AutoCompleteModeプロパティがNoneに設定されます。
  • AutoCompleteMatchingModeプロパティが先に設定され、その後AutoCompleteModeプロパティが設定された場合は、例外が発生します。

次のサンプルコードは、GcComboBoxCellのオートコンプリート機能の設定例です。

Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan

Dim GcComboBoxCell1 As New InputManCell.GcComboBoxCell()
GcComboBoxCell1.DropDownStyle = MultiRowComboBoxStyle.DropDown

GcComboBoxCell1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
GcComboBoxCell1.AutoCompleteSource = AutoCompleteSource.ListItems
GcComboBoxCell1.AutoComplete.HighlightStyle.BackColor = Color.AliceBlue
GcComboBoxCell1.AutoComplete.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.ExactMatchStartWith

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcComboBoxCell1})
                        
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;

InputManCell.GcComboBoxCell gcComboBoxCell1 = new InputManCell.GcComboBoxCell();
gcComboBoxCell1.DropDownStyle = MultiRowComboBoxStyle.DropDown;

gcComboBoxCell1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
gcComboBoxCell1.AutoCompleteSource = AutoCompleteSource.ListItems;
gcComboBoxCell1.AutoComplete.HighlightStyle.BackColor = Color.AliceBlue;
gcComboBoxCell1.AutoComplete.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.ExactMatchStartWith;

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcComboBoxCell1 });
                            
項目のオートフィルタ

GcComboBoxCellのAutoFilterプロパティが参照するAutoFilterクラスのEnabledプロパティをTrueに設定すると、GcComboBoxCellのオートフィルタ機能を使用できます。


(図) オートフィルタ機能でリストをフィルタしたGcComboBoxCell

オートフィルタ機能は、GcComboBoxCellのDropDownStyleプロパティがDropDownListに設定されている場合は無効になります。

フィルタリングの設定

MinimumPrefixLengthプロパティで設定された値の文字数が入力されたときにフィルタリングを開始します。また、一度のフィルタリングで取得可能な最大項目数は、MaxFilteredItemsプロパティで設定できます。さらに、Intervalプロパティでフィルタリング動作を開始するまでの時間(ミリ秒)を指定することができます。

検索対象カラムの設定

オートフィルタ機能では検索対象のカラムを設定できます。MatchingSourceプロパティをFilterMatchingSource.AllSubItemsに設定すると、リスト内の全てのカラムを対象に検索を行い、FilterMatchingSource.ControlTextを設定するとTextSubItemIndexプロパティに設定したTextプロパティ設定に使用されるカラム、もしくはTextFormatプロパティに設定した書式を対象に検索を行います。

検索モード

AutoFilterクラスには、オートフィルタ機能で利用する検索モードを6種類の検索方法から設定するMatchingModeプロパティがあります。なお、この検索モードはオートコンプリート機能と共通です。

MatchingModeの値 説明
MatchStartWith 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
MatchAll 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
AmbiguousMatchStartWith 前方一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します
AmbiguousMatchAll 部分一致 大文字/小文字の区別なし 全角/半角/ひらがな/カタカナ/カタカナの区別なし で検索します
ExactMatchStartWith 前方一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します
ExactMatchAll 部分一致 大文字/小文字の区別あり 全角/半角/ひらがな/カタカナ/カタカナの区別あり で検索します

次のサンプルコードは、GcComboBoxCellのフィルタリング動作の設定例です。

Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan

Dim GcComboBoxCell1 As New InputManCell.GcComboBoxCell()
GcComboBoxCell1.Name = "GcComboBoxCell1"
GcComboBoxCell1.DropDownStyle = MultiRowComboBoxStyle.DropDown

GcComboBoxCell1.AutoFilter.Enabled = True
GcComboBoxCell1.AutoFilter.Interval = 500
GcComboBoxCell1.AutoFilter.MaxFilteredItems = 8
GcComboBoxCell1.AutoFilter.MinimumPrefixLength = 1
GcComboBoxCell1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith
GcComboBoxCell1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcComboBoxCell1})
                        
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;

Template template = new Template();
InputManCell.GcComboBoxCell gcComboBoxCell1 = new InputManCell.GcComboBoxCell();
gcComboBoxCell1.Name = "gcComboBoxCell1";
gcComboBoxCell1.DropDownStyle = MultiRowComboBoxStyle.DropDown;

gcComboBoxCell1.AutoFilter.Enabled = true;
gcComboBoxCell1.AutoFilter.Interval = 500;
gcComboBoxCell1.AutoFilter.MaxFilteredItems = 8;
gcComboBoxCell1.AutoFilter.MinimumPrefixLength = 1;
gcComboBoxCell1.AutoFilter.MatchingMode = GrapeCity.Win.Editors.AutoCompleteMatchingMode.MatchStartWith;
gcComboBoxCell1.AutoFilter.MatchingSource = GrapeCity.Win.Editors.FilterMatchingSource.AllSubItems;

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcComboBoxCell1 });
                                                                
関連トピック

 

 


© MESCIUS inc. All rights reserved.