2012-03-11 37 views
5

Tôi sử dụng C# winforms visual studio 2010. Tôi có một hộp văn bản có danh sách là nguồn dữ liệu tự động hoàn thành. Tất cả mọi thứ là tốt ngoại trừ tôi không tìm thấy sự kiện khi tự động điền được nhấp vào. Tôi muốn nhấn vào hàng tự động điền và một thứ khác ngoại trừ chỉ điền vào hộp văn bản với giá trị hàng đã chọn. Có thể không?C# Tự động hoàn thành Texbox Nhấp vào Sự kiện

Thanks a lot

+1

Không, không có sự kiện hay bản thân Windows cũng không tạo ra bất kỳ thông báo nào. Bạn chỉ có thể thấy hiệu ứng phụ, TextChanged. Thông tin cơ bản nằm trong bài viết MSDN cho SHAutoComplete –

Trả lời

3

Tôi chạy một thử nghiệm nhanh này xuất hiện để làm việc, không quan tâm tôi nếu điều này là khá hacky. Tôi đã tạo một số UserControl được kế thừa từ TextBox. Nó theo dõi sự kiện KeyDown, xảy ra trước sự kiện TextChanged, chuyển đổi một chút thành true và có sự kiện TextChanged xem lại bit và ném một sự kiện (AutoCompleteUsed) để cảnh báo các lớp giám sát rằng chức năng tự động hoàn tất đã được sử dụng.

public partial class MyTextBox : TextBox 
{ 
    public delegate void AutoCompleteDelegate(); 
    public event AutoCompleteDelegate AutoCompleteUsed; 
    public MyTextBox() 
    { 
     InitializeComponent(); 
     this.TextChanged += MyTextBox_TextChanged; 
     this.KeyDown += MyTextBox_KeyDown; 
    } 
    private bool keyPressed = false; 
    void MyTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     keyPressed = true; 
    } 

    void MyTextBox_TextChanged(object sender, EventArgs e) 
    { 
     if (!keyPressed && AutoCompleteUsed != null) 
     { 
      AutoCompleteUsed(); 
     } 
     keyPressed = false; 
    } 
} 

Sửa 1: @Hans passant đã cho tôi câu trả lời trong comment của mình, tôi chỉ đưa cho bạn một làm việc (ish?) Chẳng hạn.

Các vấn đề liên quan