C# WinForms에서 Google Suggestish 텍스트 박스 만들기
C# WinForms 애플리케이션에 사용자의 입력을 기억하고 구글처럼 제안하는 스마트 텍스트 박스를 구현하고 싶었던 적이 있나요? 이 기능은 자동 완성 기능이라고 하는데, 사용자 경험을 향상시킬 뿐 아니라 애플리케이션이 사용자 행동에 더 적응할 수 있도록 만들어줍니다. 이 블로그 포스트에서는 마지막 x개의 입력을 기억하는 Google Suggestish
텍스트 박스를 만드는 방법을 살펴보겠습니다. 이를 통해 사용자에게 효율성과 편리함을 제공합니다.
문제
C#에서 독립 실행형 애플리케이션을 개발할 때, 사용자 입력을 지속적으로 기억하는 효과적인 방법을 찾는 것은 어려울 수 있습니다. 사용자는 특히 폼이나 검색 필드에서 최근 입력이 빠르게 선택 가능해야 한다고 기대합니다. 목표는 명확합니다: 애플리케이션을 종료한 후에도 마지막 몇 개의 입력을 유지하는 텍스트 박스를 만드는 것입니다.
해결 방법
좋은 소식은 이 기능을 구현하는 것이 매우 간단하다는 것입니다! 우리는 System.Windows.Forms
네임스페이스의 AutoCompleteStringCollection
을 사용하여 자동 완성 기능을 관리할 것입니다. 또한 입력을 텍스트 파일에 저장하여 입력 내용을 세션 간에 지속적으로 유지할 것입니다.
단계별 가이드
구현을 관리 가능한 부분으로 나누어 보겠습니다.
1. 폼 설정하기
먼저, 텍스트 박스가 있는 간단한 WinForms 애플리케이션을 생성해야 합니다. 텍스트 박스는 사용자 지정 자동 완성 소스를 사용하도록 구성해야 합니다.
namespace AutoComplete
{
public partial class Main : Form
{
// AutoCompleteStringCollection의 새 인스턴스를 생성합니다.
AutoCompleteStringCollection acsc;
public Main()
{
InitializeComponent();
// 텍스트 박스 구성
txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
// AutoCompleteStringCollection 초기화
acsc = new AutoCompleteStringCollection();
txtMain.AutoCompleteCustomSource = acsc;
}
}
}
2. 사용자 입력 처리하기
다음으로 사용자 입력을 추적해야 합니다. 이는 Enter 키가 눌릴 때 KeyDown
이벤트에 응답하여 수행할 수 있습니다. 다음은 입력을 관리하는 방법입니다:
private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (acsc.Count < 10)
{
// 현재 텍스트를 컬렉션에 추가합니다.
acsc.Add(txtMain.Text);
}
else
{
// 가장 오래된 항목을 제거하고 새로운 항목을 추가합니다.
acsc.RemoveAt(0);
acsc.Add(txtMain.Text);
}
}
}
3. 입력 저장 및 불러오기
애플리케이션이 종료될 때 입력이 손실되지 않도록 저장 및 불러오기 메커니즘을 구현해야 합니다.
- 입력 저장:
Main_FormClosed
이벤트에서 입력을 파일에 기록합니다.
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
{
foreach (string s in acsc)
sw.WriteLine(s);
}
}
- 입력 불러오기:
Main_Load
이벤트에서 파일에 저장된 이전 입력으로 텍스트 박스를 채웁니다.
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);
}
}
}
}
결론
이 단계를 따라 함으로써 C# 애플리케이션에서 마지막 몇 개의 사용자 입력을 기억하는 텍스트 박스를 생성할 수 있으며, 구글의 자동 완성 기능과 유사한 사용자 친화적인 경험을 제공할 수 있습니다.
본 가이드는 기본 구현을 설명하고 있지만, 필요에 따라 더 정교한 모델을 만들기 위해 논리를 수정하는 것을 주저하지 마십시오. 항목에 대한 평가 시스템을 통합하거나 입력 제한을 사용자 맞춤형으로 설정하는 등, 향상을 위한 가능성은 무궁무진합니다.
구현과 관련하여 질문이나 공유하고 싶은 아이디어가 있다면 아래에 댓글을 남겨 주세요!