IDE:C#.net,Winforms,.net 4.0
我想绑定一个带有建议的文本框,建议将来自列表,该列表中有空格分隔的单词,例如'Little Jhon'现在借助以下代码我实现了建议功能,但我想要的时候用户输入任何建议应该来自两个单词,目前它只来自第一个单词。
代码:
private void BindTournamentNames()
{
//On Load Code
List<String> lstNames= new List<string>();
lstNames.Add("Little John");
lstNames.Add("Hello Yogesh");
var source = new AutoCompleteStringCollection();
txtBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
source.AddRange(lstNames.ToArray());
txtBox1.AutoCompleteCustomSource = source;
txtBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
现在当我输入textBox'Little'时,它给了我一些建议,但是当我输入John时,它并没有给我建议,请告诉我如何做到这一点。
答案 0 :(得分:0)
现有的autoComplete功能仅支持按前缀搜索。我在我的一个项目中有相同的要求。所以我所做的是 -
在ListBox
正下方添加了TextBox
,并将其默认可见性设置为false。然后使用TextBox的OnTextChanged
事件和ListBox的SelectedIndexChanged
事件来显示和选择项目。像这样 -
注意:假设您在Form的构造函数中调用了 BindTournamentNames()方法。
protected void textBox1_TextChanged(object sender, System.EventArgs e)
{
listBox1.Items.Clear();
if (textBox1.Text.Length == 0)
{
listBox1.Visible = false;
return;
}
foreach (String s in textBox1.AutoCompleteCustomSource)
{
if (s.Contains(textBox1.Text))
{
listBox1.Items.Add(s);
listBox1.Visible = true;
}
}
}
protected void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString();
listBox1.Visible = false;
}
祝你好运......