問題:
オートコンプリート機能がテキストボックスに実装されており、結果が「[001] Last, First Middle」形式のデータベースから取得されます。現在の実装では、検索を開始するには「[001]」と入力する必要がありますが、望ましい動作は名の入力に基づいてオートコンプリートを許可することです。たとえば、「John」は「[001] Smith, John D.」を返す必要があります。
解決策:
C# の組み込みオートコンプリート機能は、プレフィックスベースの検索のみをサポートしているため、この要件には不向きです。回避策は、OnTextChanged イベントを処理し、目的の動作をプログラムで実装することにより、カスタム オートコンプリート関数を作成することです。
実装:
テキスト ボックスとその下に ListBox が追加されます。可視性は最初は false に設定されます。ユーザーがテキストボックスにテキストを入力すると、テキストボックスの OnTextChanged イベントがトリガーされます。ハンドラーは次の手順を実行します。
リストボックス内の項目が選択されると、リストボックスの SelectedIndexChanged イベントがトリガーされ、選択された項目のテキストが表示されます。テキストボックスの text プロパティにコピーされます。これでオートコンプリート プロセスが完了し、リストボックスが非表示になります。
コード例:
private void textBox1_TextChanged(object sender, System.EventArgs e) { listBox1.Items.Clear(); if (textBox1.Text.Length == 0) { hideResults(); return; } foreach (String s in textBox1.AutoCompleteCustomSource) { if (s.Contains(textBox1.Text)) { Console.WriteLine("Found text in: " + s); listBox1.Items.Add(s); listBox1.Visible = true; } } } void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); hideResults(); } void hideResults() { listBox1.Visible = false; }
このソリューションは、さらに強化できるカスタム オートコンプリート機能の基本的な例を提供します。特定の要件に基づいて。ただし、テキスト入力を処理し、推奨値のリストを動的に更新する原理を示しています。
以上がカスタム イベント ハンドラーを使用して C# でカスタム オートコンプリートを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。