首頁 >後端開發 >C++ >如何在 C# 文字方塊中建立支援非前綴匹配的自訂自動完成功能?

如何在 C# 文字方塊中建立支援非前綴匹配的自訂自動完成功能?

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# 文字方塊的自訂自動完成

在C# 文字方塊中實現自動完成功能時,通常希望允許使用者完成條目,無論順序如何他們在其中打字。例如,如果存在格式為「[001] Last, First Middle」的條目,則當使用者鍵入「John」作為名字時,它應該出現在自動完成結果中。

預設值的限制自動完成

C# 中預設的自動完成功能僅支援前綴匹配。這意味著使用者必須鍵入條目的開頭才能觸發自動完成。

使用自訂事件處理覆蓋自動完成

要克服此限制,您可以實現自訂自動完成透過重寫 OnTextChanged 事件來實現該功能。這允許您處理文字輸入並動態顯示相關的自動完成結果。

範例實作

以下範例示範如何使用ListBox 建立基本自動完成功能:

  1. 建立一個ListBox 並將其可見性設定為false預設值。
  2. 使用 TextBox 的 OnTextChanged 事件來監視使用者的輸入。
  3. 在 OnTextChanged 事件處理程序中,迭代自動完成來源並將匹配項新增至 ListBox。
  4. 將ListBox的可見度設為true以顯示自動完成結果。
  5. 使用SelectedIndexChanged事件的列錶框來選擇一個項目並使用所選文字填滿文字方塊。

自訂函數

以下是如何實現自訂自動完成函數的範例描述的上圖:

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

增強

可以透過添加功能來增強此基本實現,例如將文字附加到文字方塊、捕獲其他鍵盤命令以及實現基於過濾的功能更複雜的標準。

以上是如何在 C# 文字方塊中建立支援非前綴匹配的自訂自動完成功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn