首頁 > 後端開發 > C++ > 如何在 C# 中實現前綴匹配之外的靈活自動完成功能?

如何在 C# 中實現前綴匹配之外的靈活自動完成功能?

Barbara Streisand
發布: 2025-01-01 06:41:09
原創
320 人瀏覽過

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

為 C 實現靈活的自動完成

在 C# 中,向文字方塊新增自動完成功能時,現有解決方案僅允許基於前綴進行搜尋。為了克服此限制並啟用更靈活的搜尋選項,需要自訂實作。

一種方法是重寫 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中文網其他相關文章!

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