【发布时间】:2018-02-22 16:09:18
【问题描述】:
我想使用文本框的自动完成来显示建议的单词。例如,我输入 Tod……我的数据库中所有以“tod”开头的单词都会显示,但在我选择一个单词后,如果我输入另一个单词,例如“was”,下面将不会显示任何建议的单词。可能是因为字符串集合没有“today was”。我想显示仅以“was”而不是“today was”开头的建议词。我正在制作一个预测最常用词的项目。这是我的代码
public partial class Form1 : Form
{
string[] arr = new string[] { "sn k", "sn k", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void txtInput_TextChanged(object sender, EventArgs e)
{
predict();
}
void predict()
{
txtInput.AutoCompleteMode = AutoCompleteMode.Suggest;
txtInput.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
col.AddRange(arr);
txtInput.AutoCompleteCustomSource = col;
}
}
}
【问题讨论】:
-
AutoComplete 非常愚蠢,并且没有(m)任何扩展点。如果您需要的东西没有提供,您现在已经推出了自己的自动完成功能,但这太宽泛了,无法在这里回答。
-
你的答案是正确的。您真的不必在每次更改 TextBox 文本时都重新创建
AutoCompleteCustomSource。你甚至不需要AutoCompleteStringCollection。AutoCompleteCustomSource已经是该类型,因此您执行了两次相同的操作。你可以:txtInput.AutoCompleteCustomSource.AddRange(arr); -
我的问题是,当我输入第二个单词时,它不再提示单词了。例如,我输入“J”,文本框下方会建议一些选项,例如“一月”“七月”等。所以当我选择一月时,它会在文本框内加起来,但当我输入第二个单词“是”时,将没有显示建议的单词。可能是因为字符串集合中没有“January was”。如果可能的话,我想对在文本框中输入的多个单词使用自动完成功能。
标签: c# .net winforms autocomplete textbox