【发布时间】: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))