9

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

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

4

4 回答 4

14
    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";
    }
于 2013-04-09T07:46:21.900 回答
8

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

AutoCompleteMode : 建议追加

自动完成源:列表项

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

希望能帮助到你。

于 2014-01-22T09:40:38.577 回答
1

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

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

于 2013-04-08T12:37:34.287 回答
1

你需要在这里做的是:

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

    SELECT InvoiceNumber from Invoices WHERE InvoiceNumber LIKE '100%'

  • 将匹配结果显示在组合框中,供用户选择。
于 2013-04-08T12:38:12.540 回答