像Google搜索一样搜索组合框

时间:2013-04-08 12:19:17

标签: c# winforms autocomplete combobox search-engine

我正在创建一个Windows窗体,因为我有一个组合框,我从SQL Server 2010加载了一些“发票编号”。 我想在用户输入组合框中显示发票编号。 例如,如果用户输入'100',则下拉列表中应显示以'100'开头的发票编号。

请帮助, 在此先感谢...

4 个答案:

答案 0 :(得分:9)

    DataTable temp;
    DataTable bank;
    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

        temp = DbRdRw.SqlDbRead("Select * from BankMaster", "BankMaster");

        DataView dtview = new DataView(temp);
        dtview.Sort = "BankName DESC";
        bank = dtview.ToTable();

        comboBox1.DataSource = bank;
        comboBox1.ValueMember = "BankName";
        comboBox1.DisplayMember = "BankName";
    }

答案 1 :(得分:5)

然后在加载时使用数据库中的项填充组合框 设置组合框属性:

自动完成模式:建议附加

AutoCompleteSource :ListItems

确保将DropDown样式设置为DropDown,以便用户可以输入。 如果在接受之前列表中的输入文本确实存在,只需进行验证。

希望它有所帮助。

答案 2 :(得分:1)

尝试使用AutoCompleteMode - 建议或SuggestAppend,具体取决于您正在寻找的确切行为。另外,请记住为AutoComplete将自动完成的列表设置AutoCompleteSource(我建议使用ListItems)。

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.autocompletemode.aspx

答案 3 :(得分:1)

您需要做的是:

  • 每次用户在文本框中键入字符时都会获取一个事件。
  • 在此事件上运行一个函数来读取框中的内容(示例中为“100”)并向您的数据库发出查询,例如:

    SELECT InvoiceNumber from Invoices WHERE InvoiceNumber LIKE '100%'

  • 在组合框中显示匹配结果,供用户选择。