ホームページ > バックエンド開発 > C++ > C# の AutoComplete TextBox 機能で部分文字列一致を実装するにはどうすればよいですか?

C# の AutoComplete TextBox 機能で部分文字列一致を実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-30 22:04:14
オリジナル
539 人が閲覧しました

How Can I Implement Partial String Matching in C# AutoComplete TextBox Functionality?

C# オートコンプリート: TextBox の部分検索機能

C# でオートコンプリート機能を実装する場合、開発者は、入力された文字列がテキスト ボックスの項目の先頭と一致する必要があるという制限に遭遇することがよくあります。オートコンプリートリスト。つまり、現在の実装ではプレフィックス検索のみがサポートされています。ただし、この機能をより包括的にし、プレフィックス番号を必要とする代わりに名で検索するなど、部分一致を許可する必要がある場合は、デフォルトのオートコンプリート動作では不十分になります。

この制限を克服するには、次のようにします。 TextBox コントロールの OnTextChanged イベントをオーバーライドすることで、カスタム オートコンプリート関数を作成できます。これにより、ユーザーの入力に基づいて提案された項目のフィルタリングと表示を制御できるようになります。

たとえば、ListBox を TextBox のすぐ下に追加し、最初は非表示にし、ユーザーの入力に応じて一致する項目を表示するように設定できます。 TextBox の OnTextChanged イベントと ListBox の SelectedIndexChanged イベントを使用して、適切なオートコンプリート結果を表示および選択できます。

以下は、このカスタム実装を実現する方法の基本的な例です。

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;
}
ログイン後にコピー

このコードは、基本的なカスタム オートコンプリート関数を示しています。最小限の労力で、TextBox テキストの動的調整やさまざまなキーボード入力の処理などの追加機能を実装できます。デフォルトのオートコンプリート動作をオーバーライドすることで、特定の要件を満たすカスタム ソリューションをより柔軟に設計できるようになります。

以上がC# の AutoComplete TextBox 機能で部分文字列一致を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート