1

オートコンプリートを使用するテキストボックスがあります。たとえば、use で開始文字を入力すると、ドロップダウンにオプションが表示されます。これは、次のコードを使用して現在行っていることです。

inputTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
inputTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
inputTextBox.AutoCompleteCustomSource = inputStringCollection; //inputStringCollection contains the list of possible strings

必要なもの:

このテキスト ボックスを使用して、複数の種類のデータを検索できるようにしたいと考えています (氏名、ユーザー名、電子メール、電話番号など)。たとえば、顧客にはフルネーム、システム内のユーザー名、電話番号のリスト、電子メールのリストなどの属性があります。現在、これらのそれぞれに個別のテキストボックスがありますが、それらをすべてマージしたいと考えています。 1つに。したがって、同じテキストボックス内ですべてのタイプの属性を検索できるようにする必要があります。

問題:

考えられる実装の 1 つは、属性の種類ごとに個別の文字列コレクションを作成し、それらをすべて 1 つにマージしてから、その統合された文字列コレクションをこのテキスト ボックスに添付することです。このアプローチの問題は、重複を処理できないことです。名前とユーザー名が両方とも「John」である人物がいるとします。このような場合、ドロップダウンから選択された属性のタイプがわかりません。

質問:

テキストボックスのオートコンプリートメカニズムに単なる文字列コレクション以外のものを添付することは可能ですか? たぶん、ID、属性のタイプなどのいくつかの値を定義するカスタムデータ構造オブジェクトを格納する Arraylist を持つことができます..または同様のものですか? このようにして、ユーザーがドロップダウンからエントリを選択すると、ユーザーが選択した属性のタイプを知ることができます。

4

2 に答える 2

0

ソフトウェアで通常起こることは、これは Mac 用 iTunes Store の最初のバージョンで導入されたもので、あらゆるタイプの検索に応答する検索ボックスを 1 つだけ持つ機能です。

私たち開発者が最終的に行うことはcase、データベースを選択する前に、SQL または動的言語で変数を使用することです。

行内の何か

  • 検索でcharが見つかった場合は@、メールアドレスで探しましょう
  • regex電話番号(たとえばで一致)が見つかった場合は、電話番号で検索しましょう
  • が見つかった場合はinteger、オーダー ID で検索してみましょう
  • ...
  • それ以外の場合は、顧客の名前、住所、または市区町村で検索してみましょう

これは通常、検索ボックスを 1 つだけ「すべてを検索」にする方法です。魔女は実際にはすべてではありませんが、どこを検索するかがわかるのは検索形式です。

ユーザーがこれを使用するのは特別な場合のみであるため、動的クエリを実際に強力にすることができるすべてのフィールドを含む「高度な検索」を行うことは常に良い習慣です。

于 2012-12-25T17:05:41.713 に答える
0

外部的には通常のリストのように見える独自の「文字列コレクション」オブジェクトを作成することもできますが、内部では実際のリストをすべて内部に保持し、インターフェイス メソッドが呼び出されたときにそれらすべてを検索します。オートコンプリートがどのように提案を取得するかを調べる必要があります。

于 2012-12-25T17:08:38.083 に答える