質問を更新したので、質問がよくわかりました。また、基礎となるデータと機能が適切ではないとおっしゃっているため、何を達成しようとしているのかを正確に理解することが難しくなっています。そのため、カスタムを作成してComboBox
、自分でマッチングを処理できるかどうかを確認することをお勧めします。 .
ComboBox
入力されたテキストが a のアイテムであるかどうかをテストする関数を作成する最もエレガントな方法は、拡張メソッドを使用すること
だと思います。呼び出しは次のようになります。
// see if the Text typed in the combobox is in the autocomplete list
bool bFoundAuto = autoCompleteCombo.TextIsAutocompleteItem();
// see if the Text type in the combobox is an item in the items list
bool bFoundItem = autoCompleteCombo.TextIsItem();
拡張メソッドは次のように作成でき、検索ロジックがどのように機能するかを正確にカスタマイズできます。以下に記述した 2 つの拡張メソッドでは、入力されたテキストComboBox
がAutoCompleteCustomSource
コレクション内にあるかどうか、または 2 番目の関数でテキストがコレクション内にあるかどうかを確認するだけItems
です。
public static class MyExtensions
{
// returns true if the Text property value is found in the
// AutoCompleteCustomSource collection
public static bool TextIsAutocompleteItem(this ComboBox cb)
{
return cb.AutoCompleteCustomSource.OfType<string>()
.Where(a => a.ToLower() == cb.Text.ToLower()).Any();
}
// returns true of the Text property value is found in the Items col
public static bool TextIsItem(this ComboBox cb)
{
return cb.Items.OfType<string>()
.Where(a => a.ToLower() == cb.Text.ToLower()).Any();
}
}