基于以前用户输入的值,文本控件中自动完成的库或代码片段

时间:2009-02-22 14:14:17

标签: c# .net vb.net autocomplete controls

我正在寻找一个用于文本控件的自动完成支持的库,它可以记住用户的所有先前条目并为其提供自动完成支持。

例如,对于“最近的文件”,我使用http://www.genghisgroup.com/并且效果很好。你为此目的知道这样的事吗?

UPDATE:这是一个.NET Winforms应用程序,我正在使用普通的文本控件。

2 个答案:

答案 0 :(得分:1)

内置于.NET TextBox中的是自动完成功能。首先设置AutoCompleteMode属性(Suggest,Append等),然后选择AutoCompleteSource。您的选择是:

文件系统 HistoryList RecentlyUsedList AllUrl AllSystemSources FileSystemDirectories CustomSource 没有 listItems中

在您的情况下,您将使用CustomSource,然后填充TextCo上属性的AutoCompleteCustomSource集合。我建议有一个简单的SqlCe数据库,在那里你可以存储用户过去输入的值,然后当应用程序加载时,检索这些值,并填充AutoCompleteCustomSource。

快速代码示例:

private void button1_Click(object sender, EventArgs e)
{
    this.textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
    this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;

    string[] items = GetListForCustomSource();
    this.textBox1.AutoCompleteCustomSource.AddRange(items);

}

private string[] GetListForCustomSource()
{
    var result = new List<string>();

    foreach(var value in Enum.GetNames(typeof(DayOfWeek)))
    {
        result.Add(value);
    }

    return result.ToArray();
}

我使用DayOfWeek作为示例,但您可以在该方法中查询数据库,并返回结果。

答案 1 :(得分:0)

下载源代码并查看最近的文件。毫无疑问,它存储到某种形式的持久存储(数据库,文件等)并使用该信息填写列表。你只需要使用功能,并将其用于专注于单词而不是文件的TextBox。

我没有看过Genghis的来源,但我确信它很容易通过你使用的具有类似功能的控件来运行它。执行此操作时,请联系Genghis小组并将其作为提交内容提供。这就是我们支持开源的方式。