2012-03-11 20 views
5

Uso C# winforms visual studio 2010. Tengo un cuadro de texto que tiene una lista como origen de datos de autocompletar. Todo está bien, excepto que no encuentro el evento cuando se hace clic en el autocompletado. Quiero que el hit de fila de autocompletar y algo más, excepto que solo llene el cuadro de texto con el valor de fila seleccionado. ¿Es posible?C# Autocompletar evento de clic de Texbox

Muchas gracias

+1

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 –

Respuesta

3

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.