PRB: 첫 번째 문자들을 입력하는 동안 ComboBox 컨트롤에서 항목이 선택되지 않는다

기술 자료 번역 기술 자료 번역
기술 자료: 814362 - 이 문서가 적용되는 제품 보기.
베타 정보
이 문서에서는 Microsoft 제품의 베타 릴리스에 대해 설명합니다. 이 문서의 정보는 "있는 그대로" 제공되며 사전 통보 없이 변경될 수 있습니다.

이 베타 제품은 Microsoft의 공식 제품 지원 서비스를 받을 수 없습니다. 베타 릴리스 지원을 얻는 방법에 대한 자세한 내용은 베타 제품 파일에 포함된 설명서를 참조하거나 릴리스를 다운로드한 웹 사이트를 확인하십시오.
모두 확대 | 모두 축소

이 페이지에서

현상

ComboBox 컨트롤의 DropDownStyle 속성을 DropDownList로 설정한 다음 런타임 동안 ComboBox에 항목의 첫 번째 문자들을 입력합니다. ComboBox에서 선택된 항목이 사용자가 입력한 문자와 일치하지 않습니다. ComboBox에서 항목은 사용자가 입력한 마지막 문자를 기반으로 선택됩니다. 예를 들어, ComboBox의 항목이 red, oakrose인 경우 ComboBoxro를 입력하면 포커스는 rose 대신 oak에 있습니다.

원인

이 문제는 ComboBox 검색이 완전한 문자 집합 대신 하나의 문자를 기반으로 하기 때문에 발생합니다.

해결 과정

이 문제를 해결하려면 ComboBox에 입력한 모든 문자를 사용하여 항목을 검색하는 코드를 추가합니다. 코드는 또한 모든 문자와 가장 일치하는 항목을 선택해야 합니다. 정기적인 간격으로 검색 텍스트를 지우려면 Timer 컨트롤을 사용합니다. 이렇게 하려면 다음과 같이 하십시오.
  1. Microsoft Visual Studio .NET에서 Visual Basic .NET 또는 Visual C# .NET을 사용하여 새 Windows 응용 프로그램을 만듭니다.

    기본적으로 Form1이 만들어집니다.
  2. 도구 상자에서 Timer를 Form1로 끕니다.
  3. 속성 창에서 Enabled 속성을 True로 설정합니다.
  4. 다음 문을 해당 코드의 변수 선언 섹션에 추가합니다.

    Visual Basic .NET
    Dim searchstr As String
    Visual C# .NET
    string searchstr;
  5. 다음 코드를 Form1의 Load 이벤트에 추가합니다.

    Visual Basic .NET
    'set the timer interval and start the timer
    Timer1.Interval = 1000
    Timer1.Start()
    Visual C# .NET
    //set the interval  and start the timer
    timer1.Interval =1000;
    timer1.Start();
  6. 다음 코드를 Timer1Tick 이벤트에 추가합니다.

    Visual Basic .NET
    'empty the string for every 1 seconds
    searchstr = ""
    Visual C# .NET
    //empty the string for every 1 seconds
    searchstr="";
  7. 다음 코드를 ComboBox1KeyUp 이벤트에 추가합니다.

    Visual Basic .NET
          searchstr = searchstr & Chr(e.KeyValue)
          ' If the Search string is greater than 1 then use custom logic
          If searchstr.Length > 1 Then
             Dim index As Integer
             ' Search the Item that matches the string typed
             index = ComboBox1.FindString(searchstr)
             ' Select the Item in the Combo
             ComboBox1.SelectedIndex = index
          End If  
    Visual C# .NET
             searchstr = searchstr + Convert.ToChar(e.KeyCode);
             // If the Search string is greater than 1 then use custom logic
             if (searchstr.Length > 1)
             {
                int index;
                // Search the Item that matches the string typed
                index=comboBox1.FindString(searchstr);
                // Select the Item in the Combo
                comboBox1.SelectedIndex=index;
             }

현재 상태

이것은 의도적으로 설계된 동작입니다.

추가 정보

문제를 재현하는 방법

  1. Microsoft Visual Studio .NET에서 Visual Basic .NET 또는 Visual C# .NET을 사용하여 새 Windows 응용 프로그램을 만듭니다.

    기본적으로 Form1이 만들어집니다.
  2. 도구 상자에서 ComboBox를 Form1로 끕니다.
  3. ComboBox1을 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다.
  4. 속성 창에서 DropDownStyle을 눌러 선택한 다음 속성을 DropDownList로 설정합니다.
  5. 속성 창에서 Items를 눌러 선택한 다음 줄임표 단추(...)를 누릅니다.
  6. 문자열 컬렉션 편집기에서 다른 줄에 red, oakrose를 입력한 다음 확인을 누릅니다.
  7. 디버그 메뉴에서 시작을 눌러 응용 프로그램을 실행합니다.
  8. ComboBox1ro를 입력합니다.

참조

자세한 내용은 다음 MSDN 웹 사이트를 방문하십시오.

ComboBox.DropDownStyle 속성
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwindowsformscomboboxclassdropdownstyletopic.asp



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 814362 - 마지막 검토: 2003년 6월 13일 금요일 - 수정: 1.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com