我的表单有一个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());
}
}
答案 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)
AutoCompleteCustomSource
,AutoCompleteMode
和AutoCompleteSource
等属性执行TextBox
,通过将输入的前缀字母与所有字符串的前缀进行比较,自动完成用户输入字符串在数据源中。
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection();
addItems("Add your Data here");
textBox1.AutoCompleteCustomSource = DataCollection;
完整来源here。