如何将建议与带有名字和姓氏的文本框绑定?

时间:2014-10-27 09:02:44

标签: c# .net winforms

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时,它并没有给我建议,请告诉我如何做到这一点。

1 个答案:

答案 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;
}
祝你好运......