C#ComboBox自动完成建议

时间:2010-11-09 22:27:57

标签: c#

我已经阅读了很多帖子,但还没有真正找到任何帮助解决这个问题。我想从包含组合框中当前文本的数据库中选择所有单元格。

但是当我以这种方式尝试时,它只允许我一次输入1个字符。

private void GetSource(object sender, EventArgs e)
{
    var src = new AutoCompleteStringCollection();

    var tmp = _sqlite.GetDataTable("select customer from Machines");
    foreach (DataRow r in tmp.Rows)
    {
        if (r[0].ToString().Contains(CmbCustomer.Text))
            src.Add(r[0].ToString());
    }

    CmbCustomer.AutoCompleteCustomSource = src;

}

有没有办法做到这一点?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您应该更改查询以执行LIKE搜索(例如,SELECT Customer FROM Machines WHERE Customer LIKE CmbCustomer.Text +“%”)。这将选择一个较窄的结果集,该结果集匹配您输入的任意数量的字符。

答案 1 :(得分:0)

您应该在选择查询中检查SQLite端的匹配字符串。 “它只允许我一次输入1个字符”太模糊,无法告诉你究竟出了什么问题,但可能需要一些时间来进行搜索。如果是这种情况,您可以尝试仅使用计时器每半秒左右刷新一次自动完成。