Membuat Kotak Teks Google Suggestish di C# WinForms

Apakah Anda pernah ingin menerapkan kotak teks pintar di aplikasi C# WinForms Anda yang dapat mengingat entri pengguna seperti Google? Fungsionalitas ini, yang sering disebut sebagai fitur autocomplete, tidak hanya meningkatkan pengalaman pengguna tetapi juga membuat aplikasi Anda lebih fleksibel terhadap perilaku pengguna. Dalam pos blog ini, kita akan menjelaskan cara membuat kotak teks Google Suggestish yang mengingat beberapa entri terakhir, menjamin efisiensi dan kenyamanan bagi pengguna Anda.

Masalah

Saat mengembangkan aplikasi mandiri di C#, menemukan cara yang efektif untuk terus mengingat masukan pengguna bisa menjadi tantangan. Pengguna mengharapkan pengalaman yang mulus di mana masukan terbaru mereka tersedia untuk pemilihan cepat, terutama di formulir atau bidang pencarian. Tujuannya jelas: membuat kotak teks yang mempertahankan beberapa entri terakhir bahkan setelah aplikasi ditutup.

Solusi

Kabar baiknya adalah bahwa menerapkan fitur ini cukup sederhana! Kita akan menggunakan AutoCompleteStringCollection dari namespace System.Windows.Forms untuk mengelola fitur autocomplete kita. Selain itu, kita akan menyimpan masukan ke dalam file teks agar entri tetap ada di antara sesi.

Panduan Langkah demi Langkah

Mari kita bagi implementasi menjadi bagian-bagian yang lebih mudah dikelola.

1. Mengatur Form

Pertama, Anda perlu membuat aplikasi WinForms sederhana dengan sebuah TextBox. TextBox perlu dikonfigurasi untuk menggunakan sumber autocomplete kustom.

namespace AutoComplete
{
    public partial class Main : Form
    {
        // Membuat instance baru dari AutoCompleteStringCollection
        AutoCompleteStringCollection acsc;

        public Main()
        {
            InitializeComponent();

            // Mengonfigurasi TextBox
            txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

            // Menginisialisasi AutoCompleteStringCollection
            acsc = new AutoCompleteStringCollection();
            txtMain.AutoCompleteCustomSource = acsc;
        }
    }
}

2. Menangani Masukan Pengguna

Selanjutnya, kita perlu melacak masukan pengguna. Kita bisa melakukan ini dengan merespons peristiwa KeyDown saat tombol Enter ditekan. Berikut adalah cara Anda dapat mengelola entri:

private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (acsc.Count < 10)
        {
            // Tambahkan teks saat ini ke koleksi
            acsc.Add(txtMain.Text);
        }
        else
        {
            // Hapus entri tertua dan tambahkan yang baru
            acsc.RemoveAt(0);
            acsc.Add(txtMain.Text);
        }
    }
}

3. Menyimpan dan Memuat Entri

Untuk memastikan bahwa entri tidak hilang saat aplikasi ditutup, kita perlu mengimplementasikan mekanisme penyimpanan dan pemuatan.

  • Menyimpan Entri: Ini terjadi di peristiwa Main_FormClosed di mana kita menulis entri ke dalam file.
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
    using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
    {
        foreach (string s in acsc)
            sw.WriteLine(s);
    }
}
  • Memuat Entri: Implementasikan ini di peristiwa Main_Load untuk mengisi kotak teks dengan entri sebelumnya yang disimpan dalam file.
private void Main_Load(object sender, EventArgs e)
{
    if (File.Exists("AutoComplete.acs"))
    {
        using (StreamReader sr = new StreamReader("AutoComplete.acs"))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                acsc.Add(line);
            }
        }
    }
}

Kesimpulan

Dengan mengikuti langkah-langkah ini, Anda dapat membuat kotak teks di aplikasi C# Anda yang mengingat beberapa masukan pengguna terakhir, menawarkan pengalaman yang ramah pengguna yang mengingat fitur autocomplete Google.

Panduan ini menggambarkan implementasi dasar, tetapi Anda dapat mengubah logika untuk menciptakan model yang lebih canggih sesuai kebutuhan Anda. Apakah itu menggabungkan sistem penilaian untuk entri atau menyesuaikan batas entri, kemungkinan untuk peningkatan tidak terbatas.

Jika Anda memiliki pertanyaan atau ide untuk dibagikan mengenai implementasi Anda, silakan tinggalkan komentar di bawah!