使用Linq在运行时使用过滤的数据集更新组合框

时间:2012-06-06 19:34:10

标签: c# linq

我想在输入组合框时更新组合框的内容。我正在使用下面的代码,但显然我做错了什么;即使在调试控制台上,内容也不会被过滤和更新。当我删除组合框中的最后一个字符时,调试控制台才会更新。这是带有debug.writeline版本的代码(我将使用原始代码中组合框中列表中出现的第一条记录)。

    private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        var query = ds.Tables[0].AsEnumerable()
            .Where(d => d.Field<string>("FirstName").StartsWith(comboBox1.Text))
            .Select(d => d.Field<string>("FirstName"));
        foreach (string s in query)
            Debug.WriteLine(s);
    }

更新:看起来我的数据库有问题。上面的代码只是工作,但它需要是textchanged事件,而不是textupdate。 感谢您的贡献。

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试实现某种自动完成功能。使用TextBox并使用其AutoCompleteCustomSourceAutoCompleteModeAutoCompleteSource属性。

答案 1 :(得分:1)

您可能希望改为处理TextChanged事件。

TextChanged:&#34;当Text属性值发生变化时发生。&#34; http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

TextUpdate:&#34;在控件格式化文本时,但在显示文本之前发生。&#34; http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.textupdate.aspx