Tôi đang làm việc trong C# với hộp văn bản hoạt động như đầu vào cho tra cứu bản ghi cơ sở dữ liệu (Access SQL) theo số id. Tôi muốn có thể sử dụng AutoComplete trên hộp văn bản nhưng với một số hạn chế.C# Textbox AutoComplete: Giới hạn ~ 50 đề xuất
Vấn đề lớn là số lượng id trong hệ thống là theo thứ tự hàng nghìn vì vậy thay vì điền vào hộp Tự động hoàn tất một lần với tất cả, tôi cần theo dõi nội dung trong hộp văn bản và chỉ hiển thị đề xuất tự động điền khi có ~ 50 hoặc ít hơn lựa chọn.
Hiện nay, tôi đang làm truy vấn này trên mỗi KeyDown: SELECT count (*) FROM table WHERE id LIKE 'TextBox.Text%'
Khi đếm ít hơn 50 Tôi lấp đầy autocomplete với kết quả từ một phiên bản SELECT id của câu lệnh trên. Điều này đã dẫn tôi đến một số vấn đề, hầu hết dường như là C# quirks tôi không hiểu.
1) Khi tôi xóa hoặc thêm vào AutoCompleteCustomSet trong một sự kiện KeyDown duy nhất, phím thực tế được nhấn không được thêm vào chuỗi (tức là hành vi nhập hộp văn bản thông thường không xảy ra).
2) Tôi đã thử tách bản cập nhật AutoCompleteCustomeSet thành sự kiện khác (KeyPress hoặc KeyUp) nhưng điều này dẫn đến sự cố hoặc màn hình tự động hoàn thành sẽ hiển thị nhanh trước khi bị ẩn.
Tôi cảm thấy vấn đề này phải rất phổ biến và tôi đang đi đúng hướng. Có ai có lời khuyên nào không? Cảm ơn!
EDIT: đây là Windows Forms
EDIT2: Một top 50 chọn không sửa chữa các vấn đề mà khi người dùng (và có khả năng backspaces và tái loại) top 50 sẽ thay đổi.
Đây có phải là WinForms không? WPF? ASP.NET? – LBushkin