2017-01-06 4 views
0

나는 국가 이름을 가진 목록 상자가 있습니다. 저는 VS2015 (C#)에서 Windows Forms를 사용하고 있습니다.
입력하여 listBox에서 이름을 선택하는 동안 하나의 문자 만 허용됩니다. 따라서 "A"를 입력하면 "A"로 시작하는 첫 번째 항목으로 이동하지만 "As"를 누르면 "s"로 시작하는 항목을 표시하는 목록 상자가 표시됩니다. 나는 콤보 상자와 텍스트 상자에 대한이 답변 발견
Selecting an item in comboBox by typing
을하지만 AutoCompleteMode를 지원하지 않습니다 목록 상자처럼의 모습. 해결책이 있습니까?Windows에서 항목을 선택하려면?

+0

http://stackoverflow.com/questions/7562989/listbox-items-as-autocompletecustomsource-을 모방한다 for-a-textbox –

+0

나는 당신이 DropDownStyle의 콤보 상자를 사용하여 훨씬 더 잘 될 것이라고 생각한다. 간단한 – NicoRiff

+0

[this] (https://www.codeproject.com/tips/881637/type-ahead-suggestion-box-using- listbox)를 사용하여이를 수행하는 방법에 대한 완전한 자습서를 얻을 수 있습니다. – CodingYoshi

답변

1

검색 방법을 직접 구현하십시오. ListBox는 필요한 기능을 지원하지 않습니다. 어쨌든, TextBox에 대한 TextChanged 이벤트에 대한 메소드를 준비 할 수 있습니다.이 메소드는 콜렉션에서 결과를 검색합니다.

0

당신은 DropDownStyle.Simple와 콤보 상자를 사용해야합니다. ListBox는 결코이 기능을 갖기 위해 의도 된 것이 아니며 그렇게하도록 강요하는 것은 대개 시간 낭비입니다.

타사 컨트롤을 고려할 수도 있습니다. 예를 들어, Telerik은 ComboBox를 확장하는 DropDownList을 가지고 있으며 원하는 방식으로 정확하게 수행하고 옵션 기능을 제공합니다.

+0

조언을 주셔서 감사합니다. 다중 선택 옵션이 필요하며 ComboBox에는없는 옵션이 있습니다. –

0

다음은 몇 가지 샘플 코드입니다. ListBox 위에 TextBox를 놓습니다. TextChanged 이벤트까지 와이어 적절하고,이 콤보 상자의 자동 완성 행동 (예를 들어) ...

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     listBox1.Items.Add("Tom"); 
     listBox1.Items.Add("Dick"); 
     listBox1.Items.Add("Harry"); 
     listBox1.Items.Add("Henry"); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     TextBox oTextBox = (TextBox)sender; 
     int iListIndex = oTextBox.TextLength == 0 ? -1 : listBox1.FindString(oTextBox.Text); 
     listBox1.SelectedIndex = iListIndex; 
    } 
}