文本框动态自动完成

时间:2012-10-28 22:17:07

标签: c# json autocomplete

我的表单有一个textBox,我想在输入时添加自动完成功能。 我的自动完成值是通过json api动态加载的。

我在textBox的“TextChanged”事件中应用了“更新”功能。

每次触发时,自动完成都会打开0.5秒,textBox的值会更改为第一个自动完成条目。之后,自动完成菜单消失。

我不能选择任何建议......

如何解决?

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());
        }


    }

3 个答案:

答案 0 :(得分:1)

我修好了。

解决方案:

更改

textBoxExample.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

textBoxExample.AutoCompleteMode = AutoCompleteMode.Suggest;

答案 1 :(得分:1)

只删除你的If,不需要If ...如果你不确定那就这样做

 // 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());
   //     }

也许这可以帮到你

答案 2 :(得分:0)

AutoCompleteCustomSourceAutoCompleteModeAutoCompleteSource等属性执行TextBox,通过将输入的前缀字母与所有字符串的前缀进行比较,自动完成用户输入字符串在数据源中。

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

完整来源here