2012-10-28 229 views
1

我的表單有一個文本框,我想在輸入時添加自動完成功能。 我的自動完成值是通過json API動態加載的。文本框動態自動完成

我在文本框的「TextChanged」事件上應用了「更新」功能。

每次觸發時,自動完成打開0.5秒,文本框的值更改爲第一個自動填充條目。之後,自動完成菜單消失。

我不能選擇任何建議manuelly ...

如何解決?

onLoad事件:

AutoCompleteStringCollection colValues = new AutoCompleteStringCollection(); 
private void StellenUebersicht_Load(object sender, EventArgs e) 
{ 
     TextBox textBoxExample = textBox1; 
     textBoxExample.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     textBoxExample.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     textBoxExample.AutoCompleteCustomSource = colValues; 
     doAutoCompleteListExample(); 
} 

doAutoCompleteListExample():

private void doAutoCompleteListExample() 
    { 
     if (textBox1.Text.Length >= 1) 
     { 
      string w = Web.get("MY JSON API URL"); 

      JObject o = JObject.Parse(w); 
      List<string> ac = new List<string>(); 
      foreach (JObject item in o["items"]) 
      { 
       string name = item["name"].ToString(); 
       ac.Add(name); 
      } 
      colValues.AddRange(ac.ToArray()); 
     } 


    } 
+0

[AutoComplete TextBox Control]的可能重複(http://stackoverflow.com/questions/1357853/autocomplete-textbox-control) – jww

回答

1

我固定它。

解決方案:

變化

textBoxExample.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 

textBoxExample.AutoCompleteMode = AutoCompleteMode.Suggest; 
1

只是刪除您如果,沒有必要。如果你不知道

......做到這一點
// if (textBox1.Text.Length >= 1) 
    // { 
      string w = Web.get("MY JSON API URL"); 

      JObject o = JObject.Parse(w); 
      List<string> ac = new List<string>(); 
      foreach (JObject item in o["items"]) 
      { 
       string name = item["name"].ToString(); 
       ac.Add(name); 
      } 
      colValues.AddRange(ac.ToArray()); 
    //  } 

也許這可以幫助您

0

AutoCompleteCustomSourceAutoCompleteModeAutoCompleteSource的屬性進行TextBox通過比較前綴字母自動完成用戶輸入的字符串被輸入到數據源中的所有字符串的前綴。

 textBox1.AutoCompleteMode = AutoCompleteMode.Suggest; 
     textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection(); 
     addItems("Add your Data here"); 
     textBox1.AutoCompleteCustomSource = DataCollection; 

Full source here