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