c# WinForm -键和显示值从数据库列的输入文本的基础上

本文关键字:数据库 输入 基础上 文本 WinForm 显示 | 更新日期: 2023-09-27 18:19:17

我用的是c# Window Form。

是这样的场景。

我有一个文本字段,用户可以在其中键入连接到名称的数据库列的单词/字母。当用户键入单词/字母时,下拉将自动显示保存在我的数据库中的名称列中的名称。当我单击与输入文本匹配的名称时,我可以单击它并自动用我选择的名称填充文本字段。

txt_names.Text // The name of my textfield.
private void txt_names_KeyPress(object sender, KeyPressEventArgs e)
{
    // I have no codes here.
}
也许最好的方法是使用keypress或keydown之类的。知道如何在数据库中捕获名称吗?这有点像ajax的东西,但在c#窗口窗体。

帮忙吗?请在下面写下你的答案/评论。提前感谢!

c# WinForm -键和显示值从数据库列的输入文本的基础上

我想这会对你有所帮助,在这种情况下,我的方法是AutoCompleteTxtBox()

 void AutoCompleteTxtBox() 
    {
        txt_names.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        txt_names.AutoCompleteSource = AutoCompleteSource.CustomSource;
        AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = "your connection string";
        conn.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select * from your DataBase table name";
        OleDbDataReader myReader = cmd.ExecuteReader();
        while (myReader.Read())
        {
            string lname = myReader["the column name you want to autocomplete"].ToString();
            coll.Add(lname);
        }
        txt_names.AutoCompleteCustomSource = coll;
        conn.Close();
    }

然后调用表单上有InitializeComponent()方法的方法,像这样

 public Form1()
    {
        InitializeComponent();
        AutoCompleteTxtBox();        
    }

您可以使用组合框控件来实现。只需用字符串列表填充它。

并打开自动完成选项。