문제:
자동 완성 기능이 텍스트 상자에 대해 구현되고 있습니다. "[001] Last, First Middle" 형식의 데이터베이스에서 가져옵니다. 현재 구현에서는 검색을 시작하려면 "[001]"을 입력해야 합니다. 원하는 동작은 이름 입력을 기반으로 자동 완성을 허용하는 것이지만, 예를 들어 "John"은 "[001] Smith, John D"를 반환해야 합니다.
해결책:
C#에 내장된 자동 완성 기능은 접두사 기반 검색만 지원하므로 이 요구 사항에는 적합하지 않습니다. 해결 방법은 OnTextChanged 이벤트를 처리하고 원하는 동작을 프로그래밍 방식으로 구현하여 사용자 정의 자동 완성 기능을 만드는 것입니다.
구현:
ListBox가 텍스트 상자 아래에 추가되고 해당 가시성은 처음에 false로 설정됩니다. 사용자가 텍스트 상자에 텍스트를 입력하면 텍스트 상자의 OnTextChanged 이벤트가 트리거됩니다. 핸들러는 다음 단계를 수행합니다.
목록 상자의 항목이 선택되면 목록 상자의 SelectedIndexChanged 이벤트가 트리거되고 선택한 항목의 텍스트가 텍스트 상자의 텍스트 속성에 복사됩니다. 이렇게 하면 자동 완성 프로세스가 완료되고 목록 상자가 숨겨집니다.
코드 예:
private void textBox1_TextChanged(object sender, System.EventArgs e) { listBox1.Items.Clear(); if (textBox1.Text.Length == 0) { hideResults(); return; } foreach (String s in textBox1.AutoCompleteCustomSource) { if (s.Contains(textBox1.Text)) { Console.WriteLine("Found text in: " + s); listBox1.Items.Add(s); listBox1.Visible = true; } } } void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); hideResults(); } void hideResults() { listBox1.Visible = false; }
이 솔루션은 더욱 향상될 수 있는 사용자 정의 자동 완성 기능의 기초적인 예를 제공합니다. 특정 요구 사항을 기반으로 합니다. 그러나 텍스트 입력을 처리하고 제안된 값 목록을 동적으로 업데이트하는 원리를 보여줍니다.
위 내용은 사용자 정의 이벤트 핸들러를 사용하여 C#에서 사용자 정의 자동 완성을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!