Ben bu işe görünmektedir hızlı testi yaptık, bana aldırmayın. TextBox
'dan devralınan bir UserControl
oluşturdum. Bu, TextChanged
olayından önce tetiklenen KeyDown
olayını izler, biraz true
'a geçiş yapar ve TextChanged
olayının gözden geçirilmesini denetler ve otomatik tamamlama işlevinin kullanıldığı izleme sınıflarını uyarmak için bir olayı (AutoCompleteUsed
) atar.
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;
}
}
Düzenleme 1: @Hans Passant beni onun yorumunda bir cevap verdi, ben sadece (? Ish) Size örnek bir çalışma yaptı.
Hayır, herhangi bir olay yoktur ve Windows kendisi de herhangi bir bildirim oluşturur. Sadece TextChanged yan etkisini görebilirsiniz. Arka plan bilgisi SHAutoComplete için MSDN makalesinde –