Forms Google Suggest User Control (v1)

Visto que o método de Suggest das TextBox não apresenta todas as funcionalidades requerida num dos meus projectos decidi criar um User Control de modo a resolver esse "problemas".
Os problemas eram básicamente dois:
- De vez em quando apanhava uma excepção ao mudar a colecção AutoCompleteCustomSource, umas vezes por escrever muito depressa, outras por escrever palavras que não existiam na base de dados...
- E a principal razão foi, mesmo que a colecção tenha mais resultados só apareçem no suggest aquelas que começam exatamente da mesma forma que o texto na TextBox. Por exemplo, se na TextBox estiver "Avenida Liberdade" mesmo que a customCollection tenha "Avenida da Liberdade" essa opção não aparece... e tem que aparecer...
Como dizia um professor meu...não existe? cria-se!


Este controlo é composto por uma TexBox e uma ListBox que estão sensiveis aos seguintes eventos:
TextBox_TextChanged - Mostra a ListBox, visto que por defeito está escondida;
TextBox_KeyDown - Detecta "Enter" e Seta para baixo de modo a iniciar a navegação por tecla na ListBox.
ListBox_MouseClick - Detecta um click num dos resultados de modo a actualizar a TextBox e esconder a ListBox
ListBox_KeyDow - Detecta o "Enter" para actualizar a TextBox e esconder a ListBox

Foram implementados 2 métodos adicionais:
ListBoxHide - Esconder a ListBox (visible=false e SendToBack() no contentor Parent (importante))
ListBoxShow- Mostra a ListBox (visible=true e BringToFront() no contentor Parent (importante))

De modo a esconder a ListBox ao perder o focus foi ainda adicionado o UserControl_Leave.

Assim pré-resolvida a parte visual do controlo, falta agora toda a parte de actualização das sugestões. Irei criar ainda um mecanismo de notificações de modo a este controlo poder notificar outros que a TextBox já tem um valor.

0 comentários: