首頁 > 後端開發 > C++ > 如何使用自訂事件處理程序在 C# 中實現自訂自動完成?

如何使用自訂事件處理程序在 C# 中實現自訂自動完成?

Barbara Streisand
發布: 2024-12-31 17:50:10
原創
675 人瀏覽過

How to Implement Custom Autocomplete in C# Using a Custom Event Handler?

使用自訂事件處理程序的C# 自動完成

問題:

正在為文字方塊實作自動完成功能,其中結果來自格式為「[001] Last, First Middle」的資料庫。目前的實現需要輸入“[001]”來啟動搜索,即使所需的行為是允許基於輸入名字的自動完成,例如“John”應該返回“[001] Smith,John D.”

解決方案:

C# 中內建的自動完成功能僅支援基於前綴的搜索,這使得不適合這個要求。解決方法是透過處理 OnTextChanged 事件並以程式設計方式實現所需的行為來建立自訂自動完成函數。

實作:

在文字方塊及其下方新增一個列錶框可見性最初設定為 false。當使用者在文字方塊中輸入文字時,會觸發文字方塊的OnTextChanged 事件。此處理程序執行下列步驟:

  1. 清除列錶框中的現有項目。
  2. 如果文字方塊的文字為空,則隱藏列錶框。
  3. 迭代文字方塊的 AutoCompleteCustomSource 中的值。
  4. 如果值包含在textbox,將值加到列錶框並將其可見性設為 true。

當選擇列錶框中的某個項目時,會觸發列錶框的 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;
        }
    }
}

void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString();
    hideResults();
}

void hideResults()
{
    listBox1.Visible = false;
}
登入後複製

此解決方案提供了可以進一步增強的自訂自動完成功能的基本範例根據具體要求。然而,它演示了處理文字輸入和動態更新建議值清單的原理。

以上是如何使用自訂事件處理程序在 C# 中實現自訂自動完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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