ホームページ >バックエンド開発 >C++ >C# TextBox で非プレフィックス マッチングをサポートするカスタム オートコンプリート機能を作成するにはどうすればよいですか?

C# TextBox で非プレフィックス マッチングをサポートするカスタム オートコンプリート機能を作成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-02 18:28:38834ブラウズ

How Can I Create a Custom AutoComplete Feature in C# TextBoxes that Supports Non-Prefix Matching?

C# TextBox のカスタム オートコンプリート

C# テキストボックスにオートコンプリート機能を実装する場合、順序に関係なくユーザーがエントリを完了できるようにすることが望ましいことがよくあります。そこに入力します。たとえば、エントリが「[001] Last, First Middle」という形式で存在する場合、ユーザーが名前に「John」と入力すると、オートコンプリート結果にそのエントリが表示されます。

デフォルトの制限事項AutoComplete

C# の既定の AutoComplete 機能は、プレフィックス マッチングのみをサポートします。これは、ユーザーがオートコンプリートをトリガーするにはエントリの先頭を入力する必要があることを意味します。

カスタム イベント処理によるオートコンプリートのオーバーライド

この制限を克服するには、カスタム オートコンプリートを実装できます。 OnTextChanged イベントをオーバーライドすることで関数を呼び出します。これにより、テキスト入力を処理し、関連するオートコンプリート結果を動的に表示できます。

実装例

次の例は、ListBox を使用して基本的なオートコンプリート関数を作成する方法を示しています。

  1. ListBox を作成し、その可視性を false に設定します。デフォルト。
  2. TextBox の OnTextChanged イベントを使用して、ユーザーの入力を監視します。
  3. OnTextChanged イベント ハンドラーで、オートコンプリート ソースを反復処理し、一致する項目を ListBox に追加します。
  4. オートコンプリートの結果を表示するには、ListBox の表示設定を true に設定します。
  5. ListBox の SelectedIndexChanged イベントを使用して項目を選択し、選択したテキストを TextBox に入力します。

カスタム関数

カスタム関数を実装する方法の例を次に示します。オートコンプリート機能の説明上:

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;
        }
    }
}

機能拡張

この基本的な実装は、TextBox へのテキストの追加、追加のキーボード コマンドのキャプチャ、フィルタリング ベースの実装などの機能を追加することで拡張できます。より複雑な基準で。

以上がC# TextBox で非プレフィックス マッチングをサポートするカスタム オートコンプリート機能を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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