在我输入每个文本时显示项目列表

Posted

技术标签:

【中文标题】在我输入每个文本时显示项目列表【英文标题】:Showing list of items as I input every single text 【发布时间】:2016-08-16 01:25:07 【问题描述】:

首先,我只想为我糟糕的英语道歉。我不知道该怎么说,我一直在搜索我怎么能get the list of items as I input every single text。例如我想搜索名称打印机。当我输入第一个字母P 时,所有以P 开头的项目都会显示,依此类推。有人可以指导我学习本教程吗?或者也许可以帮助我做这个?

请随意编辑我的问题,请善待像我这样的初学者。谢谢

我正在使用winform

【问题讨论】:

我们需要进一步澄清。你用的是什么用户界面? WinForms、WPF、ASP.Net、自定义库?通常,任何文本框都会有某种更改事件/绑定,您可以订阅/绑定。 我使用的是winform 【参考方案1】:

在 WinForms 中,TextBox 控件有一个您可以订阅的KeyUp 事件。我假设您的表单上有一个名为txtSearchTextBox。使用设计器或代码隐藏中的 Load 事件将事件处理程序附加到此事件:

private void Main_Load(object sender, EventArgs e)

    txtSearch.KeyUp += txtSearch_KeyUp;

然后创建事件处理程序并使用txtSearch 的值来获取数据/过滤器等。

private void txtSearch_KeyUp(object sender, KeyEventArgs e)

    var searchText = txtSearch.Text;

    //TODO: Do something with the search string

【讨论】:

我的访问数据库中的语句可能是什么? 如果我使用组合框而不是文本框会容易吗? 你可以使用任何一个,这取决于你想要做什么。 ComboBox 将为您提供自动完成功能。您的问题太宽泛,无法在这里回答。你试过什么? 要连接到 Access,请搜索“C# ODBC 连接到 Access 数据库”。那里有很多可用的信息。【参考方案2】:

步骤 1) 在表单加载时从数据库中获取数据并填写数据表 dtAutocomplete

第 2 步)在表单加载时调用此方法

 CompleteSource(dtAutocomplete, txtCity, "City");//(datatable , your textboxname , database feild name you want to bind like printername)



  public void CompleteSource(DataTable dtsource, TextBox txtname, string fieldname)
            
                AutoCompleteStringCollection autoitem = new AutoCompleteStringCollection();

            foreach (DataRow dr in dtsource.Rows)
            
                autoitem.Add(dr[fieldname].ToString());
            

            txtname.AutoCompleteMode = AutoCompleteMode.Suggest;
            txtname.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtname.AutoCompleteCustomSource = autoitem;
        

【讨论】:

以上是关于在我输入每个文本时显示项目列表的主要内容,如果未能解决你的问题,请参考以下文章

QListView 在列表为空时显示文本

为啥 LibreOffice Impress 在每次按键时显示两个项目,而不是每个项目一个?

Qt - 如何在拖动项目时显示图像/图标/数据?

打开约会项目时显示自定义任务窗格(会议发生和个人会议)

在 AutoSuggestBox 中导航建议时显示占位符

扫描二维码时显示 Json 列表中的项目