【问题标题】:Why AutoComplete suggestions are not updating in textBox为什么自动完成建议没有在文本框中更新
【发布时间】:2014-10-30 22:04:15
【问题描述】:

IDE:Visual Studio、Winforms、C# .net 4.0

我正在创建一个具有建议功能的文本框。问题是它给出了带有首字母的建议,例如。假设源包含“你好用户”,当用户输入“用户”时,它不会给出任何建议, 为了处理这种情况,我编写了以下代码:

private void Type2_Load(object sender, EventArgs e)
{            
    source = new List<string>();
    source.Add("aaaaaa");
    source.Add("bbbbbb");
    source.Add("cccccc");
    source.Add("aa");
    source.Add("yogesshaaa");
    source.Add("yogesh aaa");

    BindTextBox(source);    
}

private void BindTextBox(List<string> bindWith)
{
    //   txt.Invalidate();
    ss = new AutoCompleteStringCollection();

    txt.AutoCompleteCustomSource = null;
    txt.AutoCompleteMode = AutoCompleteMode.None;
    txt.AutoCompleteSource = AutoCompleteSource.None;
    // ss.AddRange(bindWith.ToArray());

    txt.AutoCompleteCustomSource = ss;
    txt.AutoCompleteMode = AutoCompleteMode.Suggest;
    txt.AutoCompleteSource = AutoCompleteSource.CustomSource;
    ss.AddRange(bindWith.ToArray());
}

private void txt_TextChanged(object sender, EventArgs e)
{
    List<string> lstNewList = new List<string>();
    foreach (string s in source)
    {
        if(s.Contains(txt.Text))
        {
            lstNewList.Add(s);
        }
    }

    BindTextBox(lstNewList);
} 

txt_TextChanged 事件中,我正在创建一个新列表,其中包含要在 txtBox 建议中建议的单词,并且我正在重新绑定该文本框,但它没有给我更新的建议。 请告诉我如何解决这种情况。

【问题讨论】:

  • 您没有向列表中添加任何内容,您只是循环浏览当前源并添加回来。也许你的意思是 if(!s.Contains(txt.Text))

标签: c# winforms


【解决方案1】:

我有一个自动填充的解决方案:

首先你必须在你的文本框中调用 ControlAdded 事件:

 private void tb_ControlAdded(object sender, ControlEventArgs e)
    {

        TextBox autoText = e.Control as TextBox;
        if (autoText != null)
        {
            autoText.AutoCompleteMode = AutoCompleteMode.Suggest;
            autoText.AutoCompleteSource = AutoCompleteSource.CustomSource;
            AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection();
            addItems(DataCollection);
            autoText.AutoCompleteCustomSource = DataCollection;
        }
    }

然后创建“addItems”方法如下:

 public void addItems(AutoCompleteStringCollection col)
            {
                col.Add("Value 1");
                col.Add("Value 2");
            }

希望这能解决您的问题...祝您有美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-17
    • 2012-05-21
    • 2012-02-05
    • 2014-05-03
    • 2011-01-11
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多