Tôi có một hộp văn bản gửi một số lệnh đến một công cụ. Tôi đã thêm tính năng AutoComplete vào hộp văn bản này và mọi thứ sẽ dễ dàng hơn ngay bây giờ.Ghi đè hoặc quá tải Tự động hoàn thành Quy tắc thêm
Điều tôi đang suy nghĩ để cải thiện điều này, là thêm khả năng khi người dùng nhập lệnh (chỉ một văn bản) trong khi Tự động hoàn tất tìm thấy kết quả khớp cũng hiển thị mô tả cho lệnh đó.
Hiện tại, tôi có tất cả các chuỗi AutoComplete trong tệp văn bản và tôi tải nó khi ứng dụng bắt đầu. Textfile chứa dòng như thế này:
*IDN? #Query the instrument for identification
*RST #Resets the instrument
Vì vậy, những gì đang xảy ra trong ứng dụng của tôi là vì AutoComplete đang ở chế độ SuggestAppend
, mô tả của lệnh cũng được vào hộp văn bản (điều này cũng sẽ như vậy nếu tôi chỉ đặt nó trong Suggest
mode)
những gì tôi cần biết là làm thế nào để buộc các AutoComplete để thêm văn bản khi nó
- không thêm bất kỳ văn bản bắt đầu từ
#
char trong khi phụ thêm văn bản đề nghị - Trim() văn bản để tránh điều đó không gian mà bạn nhìn thấy trong nguồn textfile
UPDATE 1 Ok, tôi nghĩ rằng cách duy nhất là để tạo ra một lớp mới và kế thừa từ AutoCompleteStringCollection
Và trong mới này lớp học, bằng cách nào đó ghi đè lên phương pháp reponsible cho trở lại (phụ thêm) văn bản gợi ý. Tôi thực sự không có ý tưởng những gì tôi nên làm:
class MyAutoCompleteCollection : AutoCompleteStringCollection
{
//How to override Get function of AutoCompleteStringCollection class?
//It is not avilable to override :(
}
UPDATE 2 tôi phát hiện ra rằng phương pháp trong AutoCompleteStringCollection
không overridable. Tôi đang tìm kiếm một cách để thay đổi cách thức []
(thành thật mà nói tôi không biết phải gọi nó là gì!) Hoạt động. Có ai có bất kỳ ý tưởng về điều này?
CẬP NHẬT 3 Khi văn bản mà không #DESC đi vào textbox, tôi có một xử lý sự kiện cho KeyDown mà sẽ chuyển lệnh để các nhạc cụ.
Bạn có thể đăng mã hiện tại của bạn để xử lý tự động hoàn thành không? Nó dễ dàng hơn để đề xuất giải pháp mã bằng cách xem mã. –
Có lẽ bạn nên sử dụng '.Xóa (base.Text.LastIndexOf ('#'), base.Text.Length - 1) .Trim();' trong thời điểm bạn tải tệp. –
Không! toàn bộ ý tưởng là hiển thị văn bản sau # bên trong hộp tự động điền! Tôi chỉ muốn nó không đi vào bên trong hộp văn bản của tôi. –