代码之家  ›  专栏  ›  技术社区  ›  Art W

C组合框自动完成建议

c#
  •  0
  • Art W  · 技术社区  · 15 年前

    我读了很多文章,但还没有找到任何帮助解决这个问题的方法。我要从包含当前文本的数据库中选择所有单元格,这些文本将在组合框中键入。

    但是当我这样做的时候,它一次只允许我输入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 回复  |  直到 15 年前
        1
  •  1
  •   Zachary    15 年前

    您应该将查询更改为执行类似搜索(例如,从客户喜欢的机器中选择客户 cmb客户.text+“%” )这将选择一个更窄的结果集,该结果集与输入的字符数匹配。

        2
  •  0
  •   Jonathan    15 年前

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