1

我想在输入时更新组合框的内容。我正在使用下面的代码,但显然我做错了;即使在调试控制台上,内容也不会被过滤和更新。只有当我删除组合框中的最后一个字符时,调试控制台才会更新。这是带有 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。感谢您的贡献。

4

2 回答 2

1

您似乎正在尝试实现某种自动完成功能。改用 aTextBox和使用它的AutoCompleteCustomSource,AutoCompleteModeAutoCompleteSource属性。

于 2012-06-06T19:40:35.283 回答
1

您可能想要处理 TextChanged 事件。

TextChanged:“在 Text 属性值更改时发生。” http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

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

于 2012-06-06T19:41:45.190 回答