>백엔드 개발 >C++ >접두사만 일치하는 것 외에 C#에서 전체 문자열 검색 자동 완성을 어떻게 구현할 수 있습니까?

접두사만 일치하는 것 외에 C#에서 전체 문자열 검색 자동 완성을 어떻게 구현할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-30 04:45:44168검색

How Can I Implement a Full-String Search Autocomplete in C# Beyond Prefix-Only Matching?

사용자 지정 논리를 사용하여 C# 자동 완성에서 접두사 전용 검색 제한 극복

내장된 C# 자동 완성 기능의 한계에도 불구하고 가능합니다. 문자열의 일부를 기반으로 결과를 검색할 수 있는 사용자 지정 자동 완성 솔루션을 구현합니다. 이는 불완전하거나 부분적인 정보가 입력으로 제공되는 경우 특히 유용합니다.

사용자 정의 자동 완성 기술

C#의 표준 자동 완성 기능은 접두사 검색 모드에서만 작동합니다. 입력한 텍스트로 시작하는 일치 항목만 찾을 수 있습니다. 이를 극복하기 위해 OnTextChanged와 같은 이벤트를 재정의하여 자체 자동 완성 논리를 구현할 수 있습니다.

구현 예

사용자 정의 자동 완성을 구현하는 효과적인 방법은 ListBox를 사용하는 것입니다. 잠재적인 일치 항목을 표시합니다. 수정된 코드 조각은 다음과 같습니다.

// Initialize list box
listBox1.Visible = false;
listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;
listBox1.LostFocus += listBox1_LostFocus;

// Handle text changes in the text box
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))
        {
            listBox1.Items.Add(s);
            listBox1.Visible = true;
        }
    }
}

// Hide the list box on selection
void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString();
    hideResults();
}

// Hide the list box when it loses focus
void listBox1_LostFocus(object sender, System.EventArgs e)
{
    hideResults();
}

// Hide the list box
void hideResults()
{
    listBox1.Visible = false;
}

개선 사항

예제에 제공된 사용자 정의 자동 완성 솔루션은 다음과 같은 기능을 추가하여 더욱 향상될 수 있습니다.

  • 텍스트에 일치하는 텍스트 추가 상자
  • 추가 키보드 명령 캡처

위 내용은 접두사만 일치하는 것 외에 C#에서 전체 문자열 검색 자동 완성을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.