Text Box com Auto Complete em Windows Forms

Olá, meu povo e minha pova!

Respondendo ao colega Wanilton Filho, que me pediu ajuda por email, segue um exemplo simples de como fazer Auto Complete quando digitamos um texto dentro de um TextBox em uma Windows Form.
Eu criei um Windows Form com apenas um Label com o texto "Nome" e uma TextBox chamada "txtNome", onde iremos digitar um nome para que o Auto Complete nos dê sugestões de preenchimento. Veja:


Antes de mais nada, eu atribuí os seguintes valores às seguintes propriedades:

AutoCompleteMode: SuggestAppend

A propriedade AutoCompleteMode possui 4 valores possíveis: 
  • None - Auto Complete desabilitado;
  • Suggest - Exibe uma lista de opções para que o usuário escolha;
  • Append - Completa o texto com a opção mais próxima do digitado;
  • SuggestAppend - Utiliza os dois métodos acima.

AutoCompleteSource: CustomSource.

A propriedade AutoCompleteSource possui 8 valores possíveis:
  • CustomSource – Exibe uma lista personalizada, definida em AutoCompleteCustomSource;
  • FileSystem – Exibe items do sistema de arquivos como fonte;
  • FileSystemDirectories – Determina que apenas nomes de diretórios serão exibidos, ignorando nomes de arquivos;
  • HistoryList – Exibe o histórico de todas as URLs como fonte;
  • RecentlyUsedList – Exibe lista de URL’s mais usadas recentemente;
  • AllUrl – Equivalente ao HistoryList combinado com o RecentlyUsedList;
  • AllSystemResources – Equivalente ao FileSystem combinado com o AllUrl;
  • None – Determina que o recurso de AutoComplete não será habilitado. 
Depois, dentro do método Load do Form, eu criei uma lista do tipo AutoCompleteStringCollection, que contém a lista de elementos que serão utilizados como fonte para o Auto Complete do TextBox, preenchendo a lista com um monte de nomes aleatórios (somente para fins de testes).
Aí, atribuí esta lista à propriedade AutoCompleteCustomSource do TextBox (txtNome).
Veja o código como ficou:

using System;
using System.Windows.Forms;

namespace AutocompleteWinForms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            AutoCompleteStringCollection lista = new AutoCompleteStringCollection();

            lista.Add("Sofia Ferreira");
            lista.Add("Mateus Melo");
            lista.Add("Lavinia Castro");
            lista.Add("Nicolash Cavalcanti");
            lista.Add("Clara Barros");
            lista.Add("Joao Rodrigues");
            lista.Add("Eduardo Sousa");
            lista.Add("Luís Pereira");
            lista.Add("Marina Castro");
            lista.Add("Brenda Rocha");
            lista.Add("Mariana Martins");
            lista.Add("João Fernandes");
            lista.Add("Carolina Rocha");
            lista.Add("Diego Pereira");
            lista.Add("Marisa Dias");
            lista.Add("Erick Barros");
            lista.Add("Kaua Lima");
            lista.Add("Paulo Barbosa");
            lista.Add("Miguel Carvalho");
            lista.Add("Joao Azevedo");
            lista.Add("Manuela Pinto");
            lista.Add("Arthur Goncalves");
            lista.Add("Luiz Carvalho");
            lista.Add("João Goncalves");
            lista.Add("Victor Alves");
            lista.Add("Ágatha Cardoso");
            lista.Add("Igor Silva");
            lista.Add("Isabela Cardoso");
            lista.Add("Carolina Rodrigues");
            lista.Add("Giovanna Ferreira");
            lista.Add("Gustavo Correia");
            lista.Add("Amanda Gomes");
            lista.Add("Evelyn Pinto");
            lista.Add("Vitoria Dias");
            lista.Add("Isabela Rocha");
            lista.Add("Bruna Rodrigues");
            lista.Add("Melissa Fernandes");
            lista.Add("Lucas Costa");
            lista.Add("Laura Alves");
            lista.Add("Vitór Oliveira");
            lista.Add("Tomás Araujo");
            lista.Add("Ana Cardoso");
            lista.Add("Sarah Cunha");
            lista.Add("Luana Cardoso");
            lista.Add("Pedro Ribeiro");
            lista.Add("Manuela Almeida");
            lista.Add("Kaua Barbosa");
            lista.Add("Kauê Goncalves");
            lista.Add("Matilde Almeida");
            lista.Add("Julia Oliveira");
            lista.Add("Leonardo Pinto");
            lista.Add("Júlio Barbosa");
            lista.Add("Rebeca Pinto");
            lista.Add("Julia Fernandes");
            lista.Add("Ágatha Souza");
            lista.Add("Guilherme Castro");
            lista.Add("Larissa Rodrigues");
            lista.Add("Aline Barros");
            lista.Add("Kaua Rodrigues");
            lista.Add("Aline Lima");
            lista.Add("José Lima");
            lista.Add("Kauan Sousa");
            lista.Add("Lavinia Dias");
            lista.Add("Sophia Oliveira");
            lista.Add("Fábio Almeida");
            lista.Add("Beatriz Alves");
            lista.Add("Bruna Correia");
            lista.Add("Davi Cardoso");
            lista.Add("Kauã Pereira");
            lista.Add("Julian Cardoso");
            lista.Add("Gustavo Goncalves");
            lista.Add("Ana Alves");
            lista.Add("Giovana Pinto");
            lista.Add("Danilo Almeida");
            lista.Add("Bruna Cavalcanti");
            lista.Add("Luis Azevedo");
            lista.Add("Livia Sousa");
            lista.Add("Gabriel Santos");
            lista.Add("Vitór Dias");
            lista.Add("Kai Dias");
            lista.Add("Matilde Castro");
            lista.Add("Julian Araujo");
            lista.Add("Kaua Oliveira");
            lista.Add("Julieta Cardoso");
            lista.Add("Marisa Gomes");

            txtNome.AutoCompleteCustomSource = lista;
        }
    }
}
Lembrando que as chamadas "Add" do objeto "lista" podem ser feitas obtendo dados de uma tabela num banco de dados ou em um arquivo.

É isso aí! Espero que a dúvida do Wanilton tenha sido respondida! Desculpe pela demora!

Abraço!

Comentários