Desenvolvimento - C#

Usando o recurso "Auto Complete" no Windows Forms 2.0

Auto complete é uma nova característica presente no Windows Forms 2.0. Vou mostrar nesse artigo como aplicar este recurso usando dois controles: TextBox e ComboBox.

por Marcos Dell Antonio



Auto complete é uma nova característica presente no Windows Forms 2.0. Vou mostrar nesse artigo como aplicar este recurso usando dois controles: TextBox e ComboBox.

- Auto Complete no estilo dos browsers

Provavelmente você já conhece o recurso dos browsers de completar automaticamente a URL digitada ao tentar acessar um site. Se ainda não, repare na imagem abaixo:

Com as novas características do .NET 2.0 isso torna-se muito simples de ser feito. Basicamente vou trabalhar com as seguintes propriedades dos controles ComboBox e TextBox (é o mesmo conceito para ambos):

- AutoCompleteMode: define como irá se comportar o Auto Complete;
- AutoCompleteSource: define a fonte de dados do Auto Complete;
- AutoCompleteCustomSource: mantém uma fonte de dados pré-definida. É usada somente quando o AutoCompleteSource é definido como CustomSource.

O exemplo clássico para demonstrar o uso desse novo recurso é usando um controle WebBrowser. Para isso, crie uma nova aplicação (File - New - Project - Windows Application) e adicione um WebBrowser no form. Clique sobre a Smart Tag e escolha a opção "Undock in parent container" para que possamos adicionar outros controles.

Após isso, adicione um ComboBox e um Button sobre o WebBrowser. Deve ficar da seguinte forma:

No botão Abrir dê um duplo clique para codificarmos o evento Click. Segue abaixo o código:

Depois disso só resta configurar a ComboBox para executar o Auto Complete. Para isso, defina a propriedade AutoCompleteMode para SuggestAppend e AutoCompleteSource para AllUrl. Veja:

Rode a aplicação e digite na ComboBox alguma URL recém acessada. O resultado vai ser esse:

Altere a propriedade AutoCompleteMode para outro de seus valores e rode a aplicação novamente para ver qual será o resultado. As três formas de Auto Complete são bem semelhantes, por isso não vou entrar em detalhes.

- Auto Complete usando uma lista pré-definida de opções

É lógico que o Auto Complete baseado somente nas URLs acessadas não teria sentido. Por isso, existem várias outras opções no AutoCompleteSource. A que vou mostrar agora é a CustomSource, que permite definirmos uma lista de informações que serão consultadas quando for preciso completar automaticamente um controle. Neste exemplo vou usar um TextBox. Logo, apague os controles que havíamos adicionado anteriormente (inclusive o código fonte do evento Click, para evitar erros de compilação) e adicione um TextBox ao form. Nas suas propriedades, acesse a AutoCompleteCustomSource e defina uma lista de nomes. Abaixo está uma imagem de como eu defini:

Clique no botão OK para confirmar a lista e após isso defina o AutoCompleteMode para "Append" e o AutoCompleteSource para "CustomSource". Veja:

Rode a aplicação e veja o resultado:

Veja que o auto complete foi executado no modo "Append", por isso não abriu aquela lista de opções como no exemplo anterior. Para abri-la, defina o AutoCompleteMode para "Suggest". Veja o resultado:

- Auto Complete usando a lista de itens de uma ComboBox

Para finalizar, vou apresentar o exemplo que talvez seja o mais comum do nosso dia-a-dia: completar automaticamente uma ComboBox com base na sua lista de itens.

Não é muito diferente do primeiro exemplo apresentado. Para desenvolvê-lo, apague o TextBox adicionado anteriormente e adicione um ComboBox. Na lista de itens defina alguns nomes:

Na ComboBox configure a propriedade AutoCompleteMode para "Suggest" e o AutoCompleteSource para "ListItems". Basta rodar a aplicação e testar. Veja:

- Conclusão

É simples, rápido e indolor habilitar o auto complete nos controles do Windows Forms 2.0. Eu já usava isso há dois anos no Delphi e achei que deveria continuar usando no .NET. Ainda mais com essa nova moda de Ajax (me refiro ao controle AutoCompleteExtender do Atlas), vai que o pessoal começa a pensar que a Web ta "podendo" mais do que o Desktop...

Qualquer dúvida estamos aí (no e-mail lá em cima)!

- Referências

- MSDN - Propriedade AutoCompleteMode
http://msdn2.microsoft.com/en-us/system.windows.forms.combobox.autocompletemode.aspx

- MSDN - Propriedade AutoCompleteSource
http://msdn2.microsoft.com/en-us/system.windows.forms.combobox.autocompletesource.aspx

- MSDN - Propriedade AutoCompleteCustomSource
http://msdn2.microsoft.com/en-us/system.windows.forms.combobox.autocompletecustomsource.aspx

Marcos Dell Antonio

Marcos Dell Antonio - Profissional certificado (MCPD, MCTS e MCP) em tecnologias da Microsoft e especialista em .NET e Visual Studio Team System. Site: www.marcosdellantonio.net.