Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melaksanakan Pemadanan Rentetan Separa dalam Fungsi C# AutoComplete TextBox?

Bagaimanakah Saya Boleh Melaksanakan Pemadanan Rentetan Separa dalam Fungsi C# AutoComplete TextBox?

Barbara Streisand
Lepaskan: 2024-12-30 22:04:14
asal
539 orang telah melayarinya

How Can I Implement Partial String Matching in C# AutoComplete TextBox Functionality?

C# AutoComplete: Partial Search Functionality in TextBox

Apabila melaksanakan ciri autolengkap dalam C#, pembangun sering menghadapi had di mana rentetan yang dimasukkan mesti sepadan dengan permulaan item dalam senarai autolengkap. Dalam erti kata lain, pelaksanaan semasa hanya menyokong carian awalan. Walau bagaimanapun, jika anda memerlukan kefungsian ini untuk menjadi lebih menyeluruh dan membenarkan padanan separa, seperti mencari dengan nama pertama dan bukannya memerlukan nombor awalan, gelagat autolengkap lalai menjadi tidak mencukupi.

Untuk mengatasi had ini, ia adalah mungkin untuk mencipta fungsi autolengkap tersuai dengan mengatasi peristiwa OnTextChanged bagi kawalan TextBox. Ini memberikan kawalan ke atas penapisan dan paparan item yang dicadangkan berdasarkan input pengguna.

Sebagai contoh, ListBox boleh ditambah serta-merta di bawah TextBox, pada mulanya disembunyikan dan ditetapkan untuk memaparkan item yang sepadan semasa jenis pengguna. Acara OnTextChanged bagi TextBox dan acara SelectedIndexChanged bagi ListBox boleh digunakan untuk memaparkan dan memilih hasil autolengkap yang sesuai.

Di bawah ialah contoh asas bagaimana pelaksanaan tersuai ini boleh dicapai:

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;
}
Salin selepas log masuk

Kod ini menunjukkan fungsi autolengkap tersuai asas. Dengan usaha yang minimum, ciri tambahan boleh dilaksanakan, seperti melaraskan teks TextBox secara dinamik dan mengendalikan pelbagai input papan kekunci. Dengan mengatasi gelagat autolengkap lalai, anda memperoleh lebih fleksibiliti dalam mereka bentuk penyelesaian tersuai yang memenuhi keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pemadanan Rentetan Separa dalam Fungsi C# AutoComplete TextBox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan