me hizo una prueba rápida esto parece funcionar, no me importa si esto es bastante hacky. Creé un UserControl
que hereda de TextBox
. Supervisa el evento KeyDown
, que se dispara antes del evento TextChanged
, alterna un bit a true
y hace que el evento TextChanged
revise el bit y lance un evento (AutoCompleteUsed
) para alertar a las clases de supervisión de que se utilizó la funcionalidad de autocompletar.
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;
}
}
Edición 1: @Hans Passant me dio la respuesta en su comentario, me acabo de dar un trabajo (ISH?) Ejemplo.
No, no hay ningún evento ni Windows mismo genera ninguna notificación. Solo puede ver el efecto secundario, TextChanged. La información de fondo está en el artículo de MSDN para SHAutoComplete –