C# winform中gridview自动完成的文本框事件

C# winform中gridview自动完成的文本框事件,c#,sql,winforms,datagridview,C#,Sql,Winforms,Datagridview,我一直在网上寻找用于文本框的正确事件,以自动生成建议,如google.com,这样我就不必键入整个单元格值来查找我要查找的内容。目前,我有一个按钮,当点击它时,它将根据我的要求过滤网格,而不仅仅是使用文本框进行过滤。我知道有按键、文本更改等,我尝试了不同的事件以查看datagridview是否在我键入时进行过滤。没有成功。按键事件不会在我键入时过滤。textchanged事件不允许我在文本框中键入内容。那么我如何才能做到这一点呢 代码: 因为,显然,txtSearch\u TextChanged

我一直在网上寻找用于文本框的正确事件,以自动生成建议,如google.com,这样我就不必键入整个单元格值来查找我要查找的内容。目前,我有一个按钮,当点击它时,它将根据我的要求过滤网格,而不仅仅是使用文本框进行过滤。我知道有按键、文本更改等,我尝试了不同的事件以查看datagridview是否在我键入时进行过滤。没有成功。按键事件不会在我键入时过滤。textchanged事件不允许我在文本框中键入内容。那么我如何才能做到这一点呢

代码:


因为,显然,
txtSearch\u TextChanged
事件中查询中的
where
条件应该是这样的

String query = 
    "select UserID from JoshTestTable where UserID like '%" +
    txtSearch.Text.Trim() + "%' OR FirstName like '%" +
    txtSearch.Text.Trim() + "%' OR FirstName like '%" +
    txtSearch.Text.Trim() + "%' OR LastName like '%" +
    txtSearch.Text.Trim() + "%' OR Email like '%" +
    txtSearch.Text.Trim() + "%'";
当您搜索时,单击事件。或者只需从单个点查询数据库,如:

private void txtSearch_TextChanged(object sender, EventArgs e)
{
    btnSearch_Click(null, null);
}
更新 您必须用键入的内容填充自定义源。例如,我在示例中使用了
姓氏
字段,它对我有效:

private void txtSearch_TextChanged(object sender, EventArgs e)
{
    var con = new SqlConnection("{your connection string}");
    con.Open();
    String query = "select LastName from JoshTestTable where LastName like '%" + txtSearch.Text.Trim() + "%'";
    var cmd = new SqlCommand(query, con);
    var rr = cmd.ExecuteReader();
    var namesCollection = new AutoCompleteStringCollection();
    while (rr.Read())
        namesCollection.Add(rr["LastName"].ToString());
    rr.Close();
    con.Close();
    txtSearch.AutoCompleteCustomSource = namesCollection;
    txtSearch.AutoCompleteMode = AutoCompleteMode.Suggest;
    txtSearch.AutoCompleteSource = AutoCompleteSource.CustomSource;
}

我有一个按钮只是为了测试。我不想在文本框上使用自动完成按钮。我尝试了您提出的查询,但在文本框中键入时,它仍然没有过滤。
private void txtSearch_TextChanged(object sender, EventArgs e)
{
    var con = new SqlConnection("{your connection string}");
    con.Open();
    String query = "select LastName from JoshTestTable where LastName like '%" + txtSearch.Text.Trim() + "%'";
    var cmd = new SqlCommand(query, con);
    var rr = cmd.ExecuteReader();
    var namesCollection = new AutoCompleteStringCollection();
    while (rr.Read())
        namesCollection.Add(rr["LastName"].ToString());
    rr.Close();
    con.Close();
    txtSearch.AutoCompleteCustomSource = namesCollection;
    txtSearch.AutoCompleteMode = AutoCompleteMode.Suggest;
    txtSearch.AutoCompleteSource = AutoCompleteSource.CustomSource;
}