首頁 > 後端開發 > C++ > 如何在 C# 自動完成文字方塊功能中實現部分字串比對?

如何在 C# 自動完成文字方塊功能中實現部分字串比對?

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 事件來建立自訂自動完成功能。這可以根據使用者的輸入來控制過濾和顯示建議的項目。

例如,可以在文字框的正下方新增一個列錶框,最初是隱藏的,然後設定為在使用者鍵入時顯示匹配的項目。 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;
}
登入後複製

此程式碼示範了一個基本的自訂自動完成功能。只需最少的努力,就可以實現附加功能,例如動態調整文字方塊文字和處理各種鍵盤輸入。透過覆寫預設的自動完成行為,您可以更靈活地設計符合您特​​定要求的自訂解決方案。

以上是如何在 C# 自動完成文字方塊功能中實現部分字串比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板