【发布时间】:2011-09-20 07:31:39
【问题描述】:
在 WinForms 应用程序中,我有一个组合框,我试图用基于用户输入的值填充该组合框。例如,如果用户键入m,它应该向他显示以字母m 开头的所有值,但我不想在开头添加所有值,因为值很多。
为了实现这一点,我创建了一个事件 textchanged,当用户输入例如字母 m 时,我的程序会进入我的数据库并将所有带有字母 m 的值添加到组合框。
我认为组合框首先查看它是否应该自动完成(建议)值,然后才添加值的问题。
我怎样才能让它首先添加值或让组合框再次检查它是否应该建议值?
这是我的代码:
private void comboBox1_TextChanged(object sender, EventArgs e)
{
comboBox1.Items.Clear();
for (int i = 0; i < MilkProducts.Length; i++)
{
if (MilkProducts[i].StartsWith(comboBox1.Text))
{
comboBox1.Items.Add(MilkProducts[i]);
}
}
}
【问题讨论】:
-
不确定到底是什么问题..你能更好地解释发生了什么与你想要发生什么吗?
-
你试过在组合框按键事件中这样做吗?
-
我希望当用户将文本写入组合框时,会在组合框中添加一个选项数组,每次他添加一个字母或更改某些内容时,它需要删除所有以前的项目并添加新的那些,它做到了,组合框首先检查它是否需要显示任何内容的问题-并且因为没有项目(我的事件仅在系统事件之后运行)它不显示任何内容。
-
@Ankur,我怎么知道按下了哪个键?它应该是多语言的,当我使用 e.keycode 时,它只显示英文字母......,没关系,我想出了如何做到这一点。
-
@Ankur,当我使用按键时,它就像 textchanged 一样工作,首先触发组合框的系统事件,它检查是否有任何项目要显示 - 然后我的事件 - 添加项目