ホームページ >バックエンド開発 >C++ >C# でプレフィックス マッチングを超えた柔軟なオートコンプリート機能を実装するにはどうすればよいですか?

C# でプレフィックス マッチングを超えた柔軟なオートコンプリート機能を実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-01 06:41:09296ブラウズ

How to Implement Flexible AutoComplete Functionality Beyond Prefix Matching in C#?

C 向けの柔軟なオートコンプリートの実装

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 サイトの他の関連記事を参照してください。

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