C# でテキスト ボックスにオートコンプリート機能を追加する場合、既存のソリューションではプレフィックスに基づく検索のみが可能です。この制限を克服し、より柔軟な検索オプションを有効にするには、カスタム実装が必要です。
1 つの方法は、OnTextChanged イベントをオーバーライドし、カスタム オートコンプリート ロジックを実装することです。これは、テキスト ボックスの下にリスト ビューを作成し、ユーザー入力に基づいて動的に設定することで実現できます。
たとえば、これは基本的な実装です。
public Form1() { InitializeComponent(); acsc = new AutoCompleteStringCollection(); textBox1.AutoCompleteCustomSource = acsc; textBox1.AutoCompleteMode = AutoCompleteMode.None; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; } private void button1_Click(object sender, EventArgs e) { acsc.Add("[001] some kind of item"); acsc.Add("[002] some other item"); acsc.Add("[003] an orange"); acsc.Add("[004] i like pickles"); } 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 listBox1_LostFocus(object sender, System.EventArgs e) { hideResults(); } void hideResults() { listBox1.Visible = false; }
このアプローチにより、次のことが可能になります。文字列内の位置に関係なく項目を検索します。テキストの追加、キーボード コマンドのキャプチャなどの追加機能を追加することで、実装をさらに強化できます。
以上がC# でプレフィックス マッチングを超えた柔軟なオートコンプリート機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。