이것은 C# - WinForm 질문입니다. listBox에서 검색하려고합니다. 하나의 목록 상자에 일부 항목으로 가득 차 있습니다. 프로그램로드시 listBox의 모든 항목이 'tempList'라는 유형 문자열 목록에 복사됩니다. TextBox도 있습니다. 사용자가 TextBox에 입력을 시작하면 listBox는 Clear() 메서드를 사용하여 지워집니다. 그 후 텍스트 상자의 단어는 foreach 블록을 사용하여 tempList에서 검색됩니다. 모든 일치 항목은 listBox에 추가되어 사용자에게 표시됩니다. 이 코드를 내놓았다 :backgroundWorker를 사용하여 목록 상자에서 검색
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (string item in tempList)
{
if (item.ToLower().Contains(textBox1.Text.ToLower()))
{
listBox1.Items.Add(item);
}
}
}
문제는 사용자가 첫 번째 문자, 텍스트 상자에 입력하기 시작하면, UI 나누기와 사용자가 해당에 대한 검색 때까지 기다려야 가지고있다 한 문자가 완료되면 다시 입력 할 수 있으며 모든 문자와 함께 발생합니다. 이를 해결하기 위해 backgroundWorker를 사용할 수 있다고 생각했습니다. 그러나 나는이 시나리오를 위해 그것을 어떻게 사용하는지 이해하지 못한다. 도움이되는 모든 것이 인정 될 것입니다. 사용이 BackgroundWorker 구성 클래스 ...
선언 ...
BackgroundWorker listSearch = new BackgroundWorker();
초기화
다른 인터페이스로 자동 완성 기능을 복제하려는 것 같습니다. 이미 내장 된 UI 기능을 사용하지 않는 이유는 무엇입니까? – Steve
자동 완성은 사용자가 타이핑하고 텍스트 상자의 내용에 추가 할 때 단어를 제안하는 것으로 추측합니까? 그게 내 의도가 아니야. 나는 특별히 listBox에서 텍스트 상자에 입력 된 단어를 검색하려고합니다. – arm
사용자가 텍스트 상자를 떠난 후에 만 검색을 시작하거나 '입력'을 눌러야합니다. – Fabio