การสร้างกล่องข้อความ Google Suggestish ใน C# WinForms

คุณเคยต้องการที่จะสร้างกล่องข้อความอัจฉริยะในแอพพลิเคชั่น C# WinForms ของคุณที่สามารถจดจำการป้อนข้อมูลของผู้ใช้ได้เช่นเดียวกับ Google หรือไม่? ฟังก์ชันนี้มักเรียกว่า ฟีเจอร์การเติมข้อความอัตโนมัติ ซึ่งไม่เพียงแต่ช่วยปรับปรุงประสบการณ์ของผู้ใช้ แต่ยังทำให้แอพพลิเคชันของคุณปรับตัวเข้ากับพฤติกรรมผู้ใช้มากขึ้น ในบล็อกโพสต์นี้ เราจะพาทุกคนไปดูวิธีการสร้างกล่องข้อความ Google Suggestish ที่จดจำการป้อนข้อมูลล่าสุด x รายการ เพื่อให้แน่ใจว่ามีประสิทธิภาพและสะดวกสบายสำหรับผู้ใช้ของคุณ

ปัญหา

เมื่อพัฒนาแอพพลิเคชั่นแบบสแตนด์อโลนใน C# การหาวิธีที่มีประสิทธิภาพในการจดจำข้อมูลที่ผู้ใช้ป้อนอยู่ตลอดเวลาสามารถเป็นเรื่องที่ท้าทาย ผู้ใช้คาดหวังประสบการณ์ที่ราบรื่นที่การป้อนข้อมูลล่าสุดของพวกเขาใกล้เอื้อมเพื่อให้เลือกได้อย่างรวดเร็ว โดยเฉพาะในฟอร์มหรือช่องค้นหา วัตถุประสงค์นั้นชัดเจน: สร้างกล่องข้อความที่เก็บการป้อนข้อมูล ข้อมูลล่าสุดไว้แม้หลังจากปิดแอพพลิเคชั่น

ทางออก

ข่าวดีคือการนำฟีเจอร์นี้ไปใช้ค่อนข้างง่าย! เราจะใช้ AutoCompleteStringCollection จาก namespace System.Windows.Forms เพื่อจัดการฟีเจอร์การเติมข้อความอัตโนมัติของเรา นอกจากนี้เรายังจะบันทึกข้อมูลไปยังไฟล์ข้อความเพื่อให้ข้อมูลเหล่านี้อยู่อย่างถาวรข้ามเซสชัน

คู่มือทีละขั้นตอน

มาดูการดำเนินการในส่วนที่จัดการได้

1. ตั้งค่าแบบฟอร์ม

เริ่มต้นคุณต้องสร้างแอพพลิเคชั่น WinForms ที่ง่ายพร้อมกล่องข้อความ (TextBox) กล่องข้อความนี้ต้องมีการกำหนดค่าที่ใช้แหล่งข้อมูลการเติมข้อความอัตโนมัติที่กำหนดเอง

namespace AutoComplete
{
    public partial class Main : Form
    {
        // สร้างอินสแตนซ์ใหม่ของ AutoCompleteStringCollection
        AutoCompleteStringCollection acsc;

        public Main()
        {
            InitializeComponent();

            // กำหนดค่า TextBox
            txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

            // เริ่มต้น AutoCompleteStringCollection
            acsc = new AutoCompleteStringCollection();
            txtMain.AutoCompleteCustomSource = acsc;
        }
    }
}

2. การจัดการกับการป้อนข้อมูลของผู้ใช้

ถัดไป เราต้องติดตามการป้อนข้อมูลของผู้ใช้ เราสามารถทำได้โดยการตอบสนองต่อเหตุการณ์ KeyDown เมื่อกดปุ่ม Enter ด้านล่างนี้คือวิธีจัดการกับข้อมูลที่ป้อน:

private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (acsc.Count < 10)
        {
            // เพิ่มข้อความปัจจุบันลงในคอลเลกชัน
            acsc.Add(txtMain.Text);
        }
        else
        {
            // ลบรายการที่เก่าที่สุดและเพิ่มรายการใหม่
            acsc.RemoveAt(0);
            acsc.Add(txtMain.Text);
        }
    }
}

3. การบันทึกและโหลดข้อมูล

เพื่อให้แน่ใจว่าข้อมูลไม่สูญหายเมื่อปิดแอพพลิเคชัน เราต้องดำเนินการบันทึกและโหลดกลไก

  • การบันทึกข้อมูล: เกิดขึ้นในเหตุการณ์ Main_FormClosed ซึ่งเราจะเขียนข้อมูลไปยังไฟล์
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
    using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
    {
        foreach (string s in acsc)
            sw.WriteLine(s);
    }
}
  • การโหลดข้อมูล: ดำเนินการนี้ในเหตุการณ์ Main_Load เพื่อเติมกล่องข้อความด้วยข้อมูลก่อนหน้าที่เก็บไว้ในไฟล์
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);
            }
        }
    }
}

สรุป

ตามขั้นตอนเหล่านี้ คุณสามารถสร้างกล่องข้อความในแอพพลิเคชั่น C# ของคุณที่จดจำการป้อนข้อมูลล่าสุดไม่กี่รายการ ซึ่งจะมอบประสบการณ์ที่เป็นมิตรต่อผู้ใช้ที่คล้ายกับฟีเจอร์การเติมข้อความอัตโนมัติของ Google

คู่มือนี้แสดงให้เห็นถึงการนำไปใช้ในระดับพื้นฐาน แต่คุณสามารถปรับเปลี่ยนตรรกะเพื่อสร้างโมเดลที่ซับซ้อนยิ่งขึ้นตามความต้องการของคุณ ไม่ว่าจะเป็นการนำระบบการให้คะแนนสำหรับข้อมูลหรือการปรับแต่งขีดจำกัดของการป้อนข้อมูล ความเป็นไปได้ในการพัฒนามีมากมาย

หากคุณมีคำถามหรือแนวคิดที่จะแชร์เกี่ยวกับการนำไปใช้ โปรดแสดงความคิดเห็นด้านล่าง!