2016-10-24 18 views
0

AutoCompleteStringCollectionクラスの検索機能をTextBoxクラスに変更する方法はありますか?今すぐ、私はあなたの提案の最初の文字がユーザーの入力の文字と一致するデフォルトの検索機能でそれを持っていますか?私の提案はカスタムソースから来ています。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; 
    } 
} 
関連する問題