为什么自动完成建议未在textBox中更新

本文关键字:textBox 更新 为什么 | 更新日期: 2023-09-27 18:28:03

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事件中,我正在创建一个newList,其中包含要在txtBox建议中建议的单词,我正在重新绑定该textBox,但它不会给我更新的建议。请告诉我如何解决这种情况。

为什么自动完成建议未在textBox中更新

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

首先,您必须调用文本框中的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");
            }

我希望这能解决你的问题。。。祝你今天愉快!