Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Autolengkap Tersuai dalam C# Menggunakan Pengendali Acara Tersuai?

Bagaimana untuk Melaksanakan Autolengkap Tersuai dalam C# Menggunakan Pengendali Acara Tersuai?

Barbara Streisand
Barbara Streisandasal
2024-12-31 17:50:10668semak imbas

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

C# Autolengkap menggunakan Pengendali Acara Tersuai

Masalah:

Ciri autolengkap sedang dilaksanakan untuk kotak teks, di mana keputusan datang daripada pangkalan data dalam format "[001] Last, First Middle." Pelaksanaan semasa memerlukan menaip "[001]" untuk memulakan carian, walaupun gelagat yang diingini adalah membenarkan autolengkap berdasarkan menaip nama pertama, cth., "John" harus mengembalikan "[001] Smith, John D."

Penyelesaian:

Fungsi AutoComplete terbina dalam dalam C# hanya menyokong carian berasaskan awalan, menjadikannya tidak sesuai untuk keperluan ini. Penyelesaian adalah untuk mencipta fungsi autolengkap tersuai dengan mengendalikan acara OnTextChanged dan melaksanakan tingkah laku yang diingini secara pengaturcaraan.

Pelaksanaan:

Kotak Senarai ditambah di bawah kotak teks dan kotak teksnya keterlihatan pada mulanya ditetapkan kepada palsu. Apabila pengguna memasukkan teks dalam kotak teks, peristiwa OnTextChanged kotak teks akan dicetuskan. Pengendali melakukan langkah berikut:

  1. Kosongkan item sedia ada dalam kotak senarai.
  2. Jika teks kotak teks kosong, sembunyikan kotak senarai.
  3. Lelaran melalui nilai dalam AutoCompleteCustomSource kotak teks.
  4. Jika nilai mengandungi teks yang dimasukkan dalam kotak teks, tambah nilai pada kotak senarai dan tetapkan keterlihatannya kepada benar.

Apabila item dalam kotak senarai dipilih, acara SelectedIndexChanged kotak senarai dicetuskan dan teks bagi yang dipilih item disalin ke dalam sifat teks kotak teks. Ini melengkapkan proses autolengkap dan menyembunyikan kotak senarai.

Contoh Kod:

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

Penyelesaian ini menyediakan contoh asas bagi fungsi autolengkap tersuai yang boleh dipertingkatkan lagi berdasarkan keperluan khusus. Walau bagaimanapun, ia menunjukkan prinsip pengendalian input teks dan mengemas kini senarai nilai yang dicadangkan secara dinamik.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Autolengkap Tersuai dalam C# Menggunakan Pengendali Acara Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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