Criando uma Caixa de Texto Google Suggestish em C# WinForms
Você já quis implementar uma caixa de texto inteligente em sua aplicação C# WinForms que recorda as entradas do usuário como o Google? Essa funcionalidade, frequentemente chamada de recurso de autocompletar, não apenas melhora a experiência do usuário, mas também torna sua aplicação mais adaptável ao comportamento do usuário. Neste post do blog, vamos detalhar como criar uma caixa de texto Google Suggestish
que lembra as últimas x entradas, garantindo eficiência e conveniência para seus usuários.
O Problema
Ao desenvolver uma aplicação independente em C#, encontrar uma maneira eficaz de lembrar constantemente as entradas dos usuários pode ser desafiador. Os usuários esperam uma experiência contínua em que suas entradas recentes estejam disponíveis para seleção rápida, especialmente em formulários ou campos de pesquisa. O objetivo é claro: criar uma caixa de texto que retenha as últimas entradas mesmo após o fechamento da aplicação.
A Solução
A boa notícia é que implementar esse recurso é bastante simples! Usaremos AutoCompleteStringCollection
do namespace System.Windows.Forms
para gerenciar nossa funcionalidade de autocompletar. Além disso, salvaremos as entradas em um arquivo de texto para que as entradas sejam persistentes entre sessões.
Guia Passo a Passo
Vamos dividir a implementação em partes gerenciáveis.
1. Configurando o Formulário
Primeiro, você precisa criar uma aplicação WinForms simples com um TextBox. O TextBox precisará ser configurado para usar uma fonte de autocompletar personalizada.
namespace AutoComplete
{
public partial class Main : Form
{
// Criando uma nova instância de AutoCompleteStringCollection
AutoCompleteStringCollection acsc;
public Main()
{
InitializeComponent();
// Configurar o TextBox
txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
// Inicializar o AutoCompleteStringCollection
acsc = new AutoCompleteStringCollection();
txtMain.AutoCompleteCustomSource = acsc;
}
}
}
2. Manipulando a Entrada do Usuário
Em seguida, precisamos acompanhar as entradas dos usuários. Podemos fazer isso respondendo ao evento KeyDown
quando a tecla Enter for pressionada. Veja como você pode gerenciar as entradas:
private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (acsc.Count < 10)
{
// Adicionar o texto atual à coleção
acsc.Add(txtMain.Text);
}
else
{
// Remover a entrada mais antiga e adicionar a nova
acsc.RemoveAt(0);
acsc.Add(txtMain.Text);
}
}
}
3. Salvando e Carregando Entradas
Para garantir que as entradas não sejam perdidas quando a aplicação for fechada, precisamos implementar mecanismos de salvamento e carregamento.
- Salvando Entradas: Isso ocorre no evento
Main_FormClosed
, onde escrevemos as entradas em um arquivo.
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
{
foreach (string s in acsc)
sw.WriteLine(s);
}
}
- Carregando Entradas: Implemente isso no evento
Main_Load
para preencher a caixa de texto com as entradas anteriores armazenadas no arquivo.
private void Main_Load(object sender, EventArgs e)
{
if (File.Exists("AutoComplete.acs"))
{
using (StreamReader sr = new StreamReader("AutoComplete.acs"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
acsc.Add(line);
}
}
}
}
Conclusão
Seguindo esses passos, você pode criar uma caixa de texto em sua aplicação C# que lembra as últimas entradas do usuário, oferecendo uma experiência amigável reminiscentemente do recurso de autocompletar do Google.
Este guia ilustra uma implementação básica, mas fique à vontade para modificar a lógica para criar um modelo mais sofisticado de acordo com suas necessidades. Seja incorporando um sistema de avaliação para entradas ou personalizando limites de entrada, as possibilidades de aprimoramento são infinitas.
Se você tiver alguma dúvida ou ideia para compartilhar sobre a sua implementação, por favor, deixe um comentário abaixo!