ホームページ >バックエンド開発 >C++ >C# でプレフィックスのみのマッチングを超えた全文字列検索オートコンプリートを実装するにはどうすればよいですか?

C# でプレフィックスのみのマッチングを超えた全文字列検索オートコンプリートを実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-30 04:45:44182ブラウズ

How Can I Implement a Full-String Search Autocomplete in C# Beyond Prefix-Only Matching?

カスタム ロジックを使用した C# オートコンプリートでのプレフィックスのみの検索の制限を克服する

組み込みの C# オートコンプリート機能の制限にもかかわらず、それは可能です文字列の任意の部分に基づいて結果を検索できるカスタム オートコンプリート ソリューションを実装します。これは、不完全または部分的な情報が入力として提供される場合に特に便利です。

カスタム オートコンプリート テクニック

C# の標準のオートコンプリート機能は、プレフィックス検索モードでのみ動作します。は、入力されたテキストで始まる一致のみを検索できます。これを解決するには、OnTextChanged などのイベントをオーバーライドして独自のオートコンプリート ロジックを実装します。

実装例

カスタム オートコンプリートを実装する効果的な方法は、ListBox を使用することです。潜在的な一致を表示します。修正されたコード スニペットは次のとおりです。

// Initialize list box
listBox1.Visible = false;
listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
listBox1.LostFocus += listBox1_LostFocus;

// Handle text changes in the text box
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))
        {
            listBox1.Items.Add(s);
            listBox1.Visible = true;
        }
    }
}

// Hide the list box on selection
void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString();
    hideResults();
}

// Hide the list box when it loses focus
void listBox1_LostFocus(object sender, System.EventArgs e)
{
    hideResults();
}

// Hide the list box
void hideResults()
{
    listBox1.Visible = false;
}

拡張機能

例で提供されているカスタム オートコンプリート ソリューションは、次のような機能を追加することでさらに拡張できます。

  • 一致するテキストをテキスト ボックスに追加します
  • 追加のキーボードをキャプチャしますコマンド

以上がC# でプレフィックスのみのマッチングを超えた全文字列検索オートコンプリートを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。