1

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

我在文本框的“TextChanged”事件上应用了“更新”功能。

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

我无法手动选择任何建议...

怎么修?

加载事件:

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


    }
4

3 回答 3

1

我修好了它。

解决方案:

改变

textBoxExample.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

textBoxExample.AutoCompleteMode = AutoCompleteMode.Suggest;
于 2012-10-28T22:21:48.413 回答
1

只需删除您的 If,no need 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());
   //     }

也许这对你有帮助

于 2013-12-19T02:06:58.170 回答
0

和 和之类AutoCompleteCustomSource的属性通过将输入的前缀字母与数据源中所有字符串的前缀进行比较来自动完成用户输入的字符串。AutoCompleteModeAutoCompleteSourceTextBox

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

完整来源在这里

于 2014-09-23T05:40:12.797 回答