Я провел быстрый тест, который, кажется, сработал, не обращайте на меня внимания, если он довольно хакерский.Я создал UserControl
, который наследуется от TextBox
.Он отслеживает событие KeyDown
, которое срабатывает перед событием TextChanged
, переключает бит на true
, а событие TextChanged
проверяет бит и генерирует событие (AutoCompleteUsed
) для оповещения классов мониторинга о том, что авто-полная функциональность была использована.
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;
}
}
Редактировать 1: @ Ханс Пассант дал мне ответ в своем комментарии, я только что дал вам рабочий (ish?) пример.