2016-10-24 2 views
0

TextBox 클래스의 AutoCompleteStringCollection 클래스에 대한 검색 기능을 변경하려면 어떻게해야합니까? 바로 지금, 기본 검색 기능에서 내 제안의 시작 문자가 사용자 입력의 문자와 일치합니까? 내 제안은 사용자 정의 소스에서 왔습니다. -AutoCompleteStringCollection에 대한 사용자 정의 검색

+0

프리젠 테이션 기술에 태그를하시기 바랍니다. 우리는 당신이 어떤 유형의 "TextBox"를 참조하는지 알지 못합니다. –

+0

@ rory.ap. 미안합니다. –

+0

찾고있는 검색 기능의 종류를 지정하지 않았습니다. – LarsTech

답변

0

당신은 당신의 자신의 자동 완성 검색을 할 수 TextChange 를 사용하는 것은 여기에 대답 : C# winforms combobox dynamic autocomplete

코드 :

string[] data = new string[] { 
    "Absecon","Abstracta","Abundantia","Academia","Acadiau","Acamas", 
    "Ackerman","Ackley","Ackworth","Acomita","Aconcagua","Acton","Acushnet", 
    "Acworth","Ada","Ada","Adair","Adairs","Adair","Adak","Adalberta","Adamkrafft", 
    "Adams" 

}; 
public Form1() 
{ 
    InitializeComponent(); 
} 

private void comboBox1_TextChanged(object sender, EventArgs e) 
{ 
    HandleTextChanged(); 
} 

private void HandleTextChanged() 
{ 
    var txt = comboBox1.Text; 
    var list = from d in data 
       where d.ToUpper().StartsWith(comboBox1.Text.ToUpper()) 
       select d; 
    if (list.Count() > 0) 
    { 
     comboBox1.DataSource = list.ToList(); 
     //comboBox1.SelectedIndex = 0; 
     var sText = comboBox1.Items[0].ToString(); 
     comboBox1.SelectionStart = txt.Length; 
     comboBox1.SelectionLength = sText.Length - txt.Length; 
     comboBox1.DroppedDown = true; 
     return; 
    } 
    else 
    { 
     comboBox1.DroppedDown = false; 
     comboBox1.SelectionStart = txt.Length; 
    } 
} 

private void comboBox1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Back) 
    { 
     int sStart = comboBox1.SelectionStart; 
     if (sStart > 0) 
     { 
      sStart--; 
      if (sStart == 0) 
      { 
       comboBox1.Text = ""; 
      } 
      else 
      { 
       comboBox1.Text = comboBox1.Text.Substring(0, sStart); 
      } 
     } 
     e.Handled = true; 
    } 
}